Systems, methods, and computer-readable media for managing collaboration on a virtual work of art

ABSTRACT

Systems, methods, and computer-readable media for managing collaboration on a virtual work of art between multiple electronic devices are provided. A first graphical display system of a first device may generate an input command in response to receiving user information through a user interface of the first device, and may then share this input command with a second graphical display system of a second device. The first graphical display system may process the shared input command to generate pixel array data in a canvas of the first device while the second graphical display system may process the shared input command to generate pixel array data in a canvas of the second device. By sharing input commands rather than pixel array data, system latency may be reduced. Despite operating on the same artwork, the user interfaces and graphical processing capabilities of each device may vary, thereby providing the user greater expressiveness.

RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.13/194,400, filed Jul. 29, 2011, which is incorporated herein byreference in its entirety.

FIELD OF THE INVENTION

This can relate to systems, methods, and computer-readable media forsharing graphical object data and, more particularly, to systems,methods, and computer-readable media for managing collaboration on avirtual work of art between multiple electronic devices.

BACKGROUND OF THE DISCLOSURE

Some electronic devices include a graphical display system forgenerating and presenting graphical objects, such as free-form drawingstrokes, images, strings of text, and drawing shapes, on a display tocreate a virtual work of art. The processing capabilities and interfacesprovided to a user for creating such works of art often vary betweendifferent types of electronic devices. However, the ways in which two ormore electronic devices may allow one or more users to collaborate on asingle virtual work of art may be confusing or inefficient.

SUMMARY OF THE DISCLOSURE

Systems, methods, and computer-readable media for managing collaborationon a virtual work of art are provided.

In some embodiments, there is provided a method for sharing graphicaldata. The method may include receiving first user instructions with afirst user interface of a first electronic device, generating a firstinput command based on the received first user instructions with a firstgraphics application on the first electronic device, and transmittingthe first input command from the first electronic device to a secondelectronic device. The method may also include processing the firstinput command with the first graphics application on the firstelectronic device to generate first pixel array data in a first canvasof the first electronic device. Moreover, in some embodiments, themethod may also include processing the first input command with a secondgraphics application on the second electronic device to generate secondpixel array data in a second canvas of the second electronic device.

In other embodiments, there is provided a method for sharing graphicaldata that includes loading a first graphics application on a firstelectronic device, loading an artwork into the first graphicsapplication on the first electronic device, and sending firstinformation from the first electronic device to a second electronicdevice. The first information may be configured to instruct the secondelectronic device to load at least a first portion of the artwork into asecond graphics application on the second electronic device.

In yet other embodiments, there is provided an electronic device thatincludes a display, a user input component, communications circuitry,and a processor. The processor may be configured to receive a first userinstruction from the user input component, generate a first inputcommand based on the received first user instruction, provide the firstinput command to the communications circuitry for transmission of thefirst input command to another electronic device, process first pixelarray data from the first input command, and present at least a portionof the first pixel array data on the display.

In still yet other embodiments, there is provided computer-readablemedia for controlling an electronic device. The media includescomputer-readable code recorded thereon for receiving first userinstructions with a first user interface of the electronic device,generating a first input command based on the received first userinstructions, transmitting the first input command from the electronicdevice to another electronic device, and processing the first inputcommand on the electronic device to generate first pixel array data.

In still yet other embodiments, there is provided a data processingsystem that includes a processor to execute instructions and a memorycoupled with the processor to store instructions. When executed by theprocessor, the instructions may cause the processor to performoperations to generate an application programming interface (“API”) thatmay allow an API-calling component to perform the following operations:receive first user instructions with a first user interface of a firstelectronic device, generate a first input command based on the receivedfirst user instructions, transmit the first input command from the firstelectronic device to another electronic device, and process the firstinput command on the first electronic device to generate first pixelarray data.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other aspects of the invention, its nature, and variousfeatures will become more apparent upon consideration of the followingdetailed description, taken in conjunction with the accompanyingdrawings, in which like reference characters refer to like partsthroughout, and in which:

FIG. 1 is a schematic view of an illustrative system for managingcollaboration on a virtual work of art, in accordance with someembodiments of the invention;

FIG. 2 is a schematic view of illustrative portions of the system ofFIG. 1, in accordance with some embodiments of the invention;

FIGS. 3A and 3B are additional schematic views of the illustrativeportions of the system of FIGS. 1 and 2, in accordance with someembodiments of the invention;

FIGS. 4A-4K are front views of the electronic devices of the system ofFIGS. 1-3B, presenting exemplary screens of displayed graphical data, inaccordance with some embodiments of the invention;

FIGS. 5 and 5A are flowcharts of illustrative processes for managingcollaboration on a virtual work of art, in accordance with someembodiments of the invention;

FIG. 6 is a block diagram of an illustrative application programminginterface (“API”) architecture, in accordance with some embodiments ofthe invention; and

FIG. 7 is a block diagram of an illustrative API software stack, inaccordance with some embodiments of the invention.

DETAILED DESCRIPTION OF THE DISCLOSURE

Systems, methods, and computer-readable media for managing collaborationon a virtual work of art are provided and described with reference toFIGS. 1-7.

A virtual work of art may be simultaneously loaded by and presented ontwo or more electronic devices in a communications network, such thatany change made to the artwork by a user interaction with any one of thedevices may be reflected in the artwork on all of the devices. Eachdevice may have different user interfaces and processing capabilities,such that the strengths of each device may be leveraged by one or moreusers to collaborate on the artwork in an efficient and intuitivemanner.

A user's interaction with a virtual drawing application running on eachdevice may be utilized to generate one or more input commands forediting the artwork. Each input command may be processed to generatepixel array data that can present the graphical object content of theartwork. Each device may receive each input command generated by each ofthe other devices in the communications network, and each device may besimilarly configured to process each received input command in aconsistent manner, such that the artwork may be updated with the samepixel array data on each of the devices.

For example, a first graphical display system of a first electronicdevice may be able to generate a first input command in response toreceiving first user information through a user interface of the firstdevice. The first graphical display system may then share this firstinput command with a second graphical display system of a secondelectronic device in a communications network. The first graphicaldisplay system may be configured to process the shared input command togenerate pixel array data in a first canvas of the first device, whilethe second graphical display system may be configured to process theshared input command to generate the same pixel array data in a secondcanvas of the second device. By sharing input commands rather than pixelarray data, the two devices may reduce latency in the communicationsnetwork. The first canvas and the second canvas may each include thesame pixel array data such that the same artwork may be available oneach device. However, different portions of the artwork may be presentedon different devices. For example, at least a first portion of the firstcanvas may be presented on a display of the first device, and at least asecond portion of the second canvas may be presented on a display of thesecond device. In other embodiments, the entirety of the first canvasmay be presented on the display of the first device, and the entirety ofthe second canvas may be presented on the display of the second device,such that the entirety of the shared artwork is presented on eachdevice.

FIG. 1 is a schematic view of an illustrative system 1 for managingcollaboration on a virtual work of art in accordance with someembodiments of the invention. System 1 may include a first electronicdevice 100 and a second electronic device 200. System 1 may also includea communications network 50, through which first electronic device 100and second electronic device 200 may communicate with one another.Alternatively or additionally, first electronic device 100 and secondelectronic device 200 may communicate directly with one another via ashared communications link 51.

Either one or both of first electronic device 100 and second electronicdevice 200 may be any portable, mobile, or hand-held electronic deviceconfigured to create a virtual work of art wherever the user travels.Alternatively, either one or both of first electronic device 100 andsecond electronic device 200 may not be portable at all, but may insteadbe generally stationary. Either one or both of first electronic device100 and second electronic device 200 can include, but is not limited to,a music player (e.g., an iPod™ available by Apple Inc. of Cupertino,Calif.), video player, still image player, game player, other mediaplayer, music recorder, movie or video camera or recorder, still camera,other media recorder, radio, medical equipment, domestic appliance,transportation vehicle instrument, musical instrument, calculator,cellular telephone (e.g., an iPhone™ available by Apple Inc.), otherwireless communication device, personal digital assistant, remotecontrol, pager, computer (e.g., a desktop, laptop, tablet, server,etc.), monitor, television, stereo equipment, set up box, set-top box,boom box, modem, router, printer, and combinations thereof. In someembodiments, either one or both of first electronic device 100 andsecond electronic device 200 may perform a single function (e.g., adevice dedicated to creating a virtual work of art) and, in otherembodiments, either one or both of first electronic device 100 andsecond electronic device 200 may perform multiple functions (e.g., adevice that creates virtual artwork, plays music, and receives andtransmits telephone calls).

First electronic device 100 of system 1 may include a processor orcontrol circuitry 102, memory 104, communications circuitry 106, powersupply 108, input component 110, display 112, and sensor 114. Firstelectronic device 100 may also include a bus 116 that may provide one ormore wired or wireless communications links or paths for transferringdata and/or power to, from, or between various other components of firstelectronic device 100. In some embodiments, one or more components offirst electronic device 100 may be combined or omitted. Moreover, firstelectronic device 100 may include other components not combined orincluded in FIG. 1 and/or several instances of the components shown inFIG. 1. For the sake of simplicity, only one of each of the componentsof first electronic device 100 is shown in FIG. 1.

Memory 104 of first electronic device 100 may include one or morestorage mediums, including for example, a hard-drive, flash memory,permanent memory such as read-only memory (“ROM”), semi-permanent memorysuch as random access memory (“RAM”), any other suitable type of storagecomponent, or any combination thereof. Memory 104 may include cachememory, which may be one or more different types of memory used fortemporarily storing data for electronic device applications. Memory 104may store media data (e.g., music and image files), software (e.g., forimplementing functions on first electronic device 100), firmware,preference information (e.g., media playback preferences), lifestyleinformation (e.g., food preferences), exercise information (e.g.,information obtained by exercise monitoring equipment), transactioninformation (e.g., information such as credit card information),wireless connection information (e.g., information that may enable firstelectronic device 100 to establish a wireless connection), subscriptioninformation (e.g., information that keeps track of podcasts ortelevision shows or other media a user subscribes to), contactinformation (e.g., telephone numbers and e-mail addresses), calendarinformation, any other suitable data, or any combination thereof.

Communications circuitry 106 of first electronic device 100 may beprovided to allow first electronic device 100 to communicate with one ormore other electronic devices or servers (e.g., second electronic device200 and/or a server 70 of communications network 50) using any suitablecommunications protocol. For example, communications circuitry 106 maysupport Wi-Fi (e.g., an 802.11 protocol), Ethernet, Bluetooth™,Bluetooth™ Low Energy (“BLE”), high frequency systems (e.g., 900 MHz,2.4 GHz, and 5.6 GHz communication systems), infrared, transmissioncontrol protocol/internet protocol (“TCP/IP”) (e.g., any of theprotocols used in each of the TCP/IP layers), hypertext transferprotocol (“HTTP”), BitTorrent™, file transfer protocol (“FTP”),real-time transport protocol (“RTP”), real-time streaming protocol(“RTSP”), secure shell protocol (“SSH”), any communications protocolthat may be used by wireless and cellular telephones and personal e-maildevices (e.g., Global System for Mobile Communications (“GSM”), GSM plusEnhanced Data rates for GSM Evolution (“EDGE”), Code Division MultipleAccess (“CDMA”), Orthogonal Frequency-Division Multiple Access(“OFDMA”), high speed packet access (“HSPA”), multi-band, etc.), anyother communications protocol, or any combination thereof.Communications circuitry 106 may also include circuitry that can enablefirst electronic device 100 to be electrically coupled to another device(e.g., a host computer or an accessory device) and communicate with thatother device, either wirelessly or via a wired connection.

Power supply 108 of first electronic device 100 may provide power to oneor more of the components of first electronic device 100. In someembodiments, power supply 108 can be coupled to a power grid (e.g., whendevice 100 is not a portable device, such as a desktop computer). Insome embodiments, power supply 108 can include one or more batteries forproviding power (e.g., when device 100 is a portable device, such as acellular telephone). As another example, power supply 108 can beconfigured to generate power from a natural source (e.g., solar powerusing solar cells).

One or more input components 110 of first electronic device 100 may beprovided to permit a user to interact or interface with first electronicdevice 100. For example, input component 110 can take a variety offorms, including, but not limited to, a touch pad, dial, click wheel,scroll wheel, touch screen, one or more buttons (e.g., a keyboard),mouse, joy stick, track ball, microphone, camera, proximity sensor,light detector, and combinations thereof. Each input component 110 canbe configured to provide one or more dedicated control functions formaking selections or issuing commands associated with operating firstelectronic device 100.

First electronic device 100 may also include one or more outputcomponents that may present information (e.g., graphical, audible,and/or tactile information) to a user of first electronic device 100. Anoutput component of first electronic device 100 may take various forms,including, but not limited to, audio speakers, headphones, audioline-outs, visual displays, antennas, infrared ports, rumblers,vibrators, or combinations thereof.

For example, as shown in FIG. 1, first electronic device 100 may includedisplay 112 as an output component. Display 112 may include any suitabletype of display or interface for presenting visual data to a user. Insome embodiments, display 112 may include a display embedded in firstelectronic device 100 or coupled to first electronic device 100 (e.g., aremovable display). Display 112 may include, for example, a liquidcrystal display (“LCD”), a light emitting diode (“LED”) display, anorganic light-emitting diode (“OLED”) display, a surface-conductionelectron-emitter display (“SED”), a carbon nanotube display, ananocrystal display, any other suitable type of display, or combinationthereof. Alternatively, display 112 can include a movable display or aprojecting system for providing a display of content on a surface remotefrom first electronic device 100, such as, for example, a videoprojector, a head-up display, or a three-dimensional (e.g., holographic)display. As another example, display 112 may include a digital ormechanical viewfinder, such as a viewfinder of the type found in compactdigital cameras, reflex cameras, or any other suitable still or videocamera.

In some embodiments, display 112 may include display driver circuitry,circuitry for driving display drivers, or both. Display 112 can beoperative to display content (e.g., media playback information,application screens for applications implemented on first electronicdevice 100, information regarding ongoing communications operations,information regarding incoming communications requests, device operationscreens, etc.) that may be under the direction of processor 102. Display112 can be associated with any suitable characteristic dimensionsdefining the size and shape of the display. For example, the display canbe rectangular or have any other polygonal shape, or alternatively canbe defined by a curved or other non-polygonal shape (e.g., a circulardisplay). Display 112 can have one or more primary orientations forwhich an interface can be displayed, or can instead or in addition beoperative to display an interface along any orientation selected by auser.

It should be noted that one or more input components and one or moreoutput components may sometimes be referred to collectively herein as aninput/output (“I/O”) component or I/O interface (e.g., input component110 and display 112 as I/O component or I/O interface 111). For example,input component 110 and display 112 may sometimes be a single I/Ocomponent 111, such as a touch screen, that may receive inputinformation through a user's touch of a display screen and that may alsoprovide visual information to a user via that same display screen.

Sensor 114 of first electronic device 100 may include any suitablemotion sensor operative to detect movements of first electronic device100. For example, sensor 114 may be a motion-sensing component operativeto detect movement of first electronic device 100. In some embodiments,sensor 114 may include one or more three-axis acceleration motionsensors (e.g., an accelerometer) operative to detect linear accelerationin three directions (i.e., the x- or left/right direction, the y- orup/down direction, and the z- or forward/backward direction). As anotherexample, sensor 114 may include one or more single-axis or two-axisacceleration motion sensors which may be operative to detect linearacceleration only along each of the x- or left/right direction and they- or up/down direction, or along any other pair of directions. In someembodiments, sensor 114 may include an electrostatic capacitance (e.g.,capacitance-coupling) accelerometer that is based on siliconmicro-machined micro electro-mechanical systems (“MEMS”) technology,including a heat-based MEMS type accelerometer, a piezoelectric typeaccelerometer, a piezo-resistance type accelerometer, or any othersuitable accelerometer.

In some embodiments, sensor 114 may be operative to directly orindirectly detect rotation, rotational movement, angular displacement,tilt, position, orientation, motion along a non-linear (e.g., arcuate)path, or any other non-linear motions. In some embodiments, sensor 114may alternatively or additionally include one or more gyro-motionsensors or gyroscopes for detecting rotational movement. For example,sensor 114 may include a rotating or vibrating element. Using sensor114, first electronic device 100 can determine an orientation of display112, for example.

Processor 102 of first electronic device 100 may include any processingcircuitry operative to control the operations and performance of one ormore components of first electronic device 100. For example, processor102 may receive input signals from input component 110 and/or driveoutput signals through display 112. In some embodiments, as shown inFIG. 1, processor 102 may be used to run an application 103. Application103 may include, but is not limited to, one or more operating systemapplications, firmware applications, media playback applications, mediaediting applications, or any other suitable applications. For example,processor 102 may load application 103 as a user interface program todetermine how instructions or data received via an input component 110or other component of device 100 may manipulate the way in whichinformation is stored and/or provided to the user via an outputcomponent (e.g., display 112). Application 103 may be accessed byprocessor 102 from any suitable source, such as from memory 104 (e.g.,via bus 116), from second electronic device 200 or from server 70 ofcommunications network 50 (e.g., via communications circuitry 106), orfrom any other suitable source. First electronic device 100 (e.g.,processor 102, memory 104, or any other components available to device100) may be configured to process graphical data at various resolutions,frequencies, intensities, and various other characteristics as may beappropriate for the capabilities and resources of first electronicdevice 100.

First electronic device 100 may also be provided with a housing 101 thatmay at least partially enclose one or more of the components of firstelectronic device 100 for protection from debris and other degradingforces external to device 100. In some embodiments, one or more of thecomponents of first electronic device 100 may be provided within its ownhousing (e.g., input component 110 may be an independent keyboard ormouse within its own housing that may wirelessly or through a wirecommunicate with processor 102, which may be provided within its ownhousing).

Second electronic device 200 of system 1 may include a processor orcontrol circuitry 202, memory 204, communications circuitry 206, powersupply 208, input component 210, display 212, and sensor 214. In someembodiments, input component 210 and display 212 of second electronicdevice 200 may sometimes be a single I/O interface or I/O component 211.Second electronic device 200 may also include a housing 201 as well as abus 216 that may provide one or more wired or wireless communicationslinks or paths for transferring data and/or power to, from, or betweenvarious other components of second electronic device 200. As also shownin FIG. 1, processor 202 may be used to run an application 203 that mayinclude, but is not limited to, one or more operating systemapplications, firmware applications, media playback applications, mediaediting applications, or any other suitable applications. Application203 may be accessed by processor 202 from any suitable source, such asfrom memory 204 (e.g., via bus 216), from first electronic device 100 orfrom server 70 of communications network 50 (e.g., via communicationscircuitry 206), or from any other suitable source. In some embodiments,one or more components of second electronic device 200 may be combinedor omitted. Moreover, second electronic device 200 may include othercomponents not combined or included in FIG. 1 and/or several instancesof the components shown in FIG. 1. For the sake of simplicity, only oneof each of the components of second electronic device 200 is shown inFIG. 1.

Each one of housing 201, processor 202, application 203, memory 204,communications circuitry 206, power supply 208, input component 210, I/Ocomponent 211, display 212, sensor 214, and bus 216 of second electronicdevice 200 may be the same as or substantially similar to a respectiveone of housing 101, processor 102, application 103, memory 104,communications circuitry 106, power supply 108, input component 110, I/Ocomponent 111, display 112, sensor 114, and bus 116 of first electronicdevice 100 and, therefore, may not be independently described in greaterdetail. While, in some embodiments, first electronic device 100 andsecond electronic device 200 may be the same or substantially similardevices, in other embodiments, first electronic device 100 may have oneor more different and/or additional components that second electronicdevice 200 does not have, and vice versa.

In some embodiments, communications circuitry 106 of first electronicdevice 100 and communications circuitry 206 of second electronic device200 may communicate with one another directly, such as, for example, viashared communications link 51 of system 1. Shared communications link 51may include one or more wired and/or wireless communications links orpaths for transferring any suitable data and/or power between firstelectronic device 100 and second electronic device 200. Alternatively oradditionally, in some embodiments, system 1 may include communicationsnetwork 50, with which one or both of first electronic device 100 andsecond electronic device 200 may communicate. For example, a firstelectronic device communications link 151 of system 1 may include one ormore wired and/or wireless communications links or paths fortransferring any suitable data and/or power between communicationscircuitry 106 of first electronic device 100 and communications network50. Similarly, a second electronic device communications link 251 ofsystem 1 may include one or more wired and/or wireless communicationslinks or paths for transferring any suitable data and/or power betweencommunications circuitry 206 of second electronic device 200 andcommunications network 50. In some embodiments, as an alternative or inaddition to communicating with one another via shared communicationslink 51, first electronic device 100 and second electronic device 200may communicate with one another via communications network 50 andcommunications links 151 and 251.

Any suitable circuitry, device, system or combination of these (e.g., awireless communications infrastructure including one or morecommunications towers, telecommunications servers, or the like)operative to create a communications network may be used to providecommunications network 50. Communications network 50 may be capable ofproviding communications using any suitable communications protocol. Forexample, communications network 50 may support Wi-Fi, Ethernet,Bluetooth™, BLE, high frequency systems (e.g., 900 MHz, 2.4 GHz, and 5.6GHz communication systems), infrared, TCP/IP, HTTP, BitTorrent™, FTP,RTP, RTSP, SSH, any communications protocol that may be used by wirelessand cellular telephones and personal e-mail devices (e.g., GSM, GSM plusEDGE, CDMA, OFDMA, HSPA, multi-band, etc.), any other communicationsprotocol, or any combination thereof.

Moreover, in some embodiments, communications network 50 may include oneor more servers 70 or any other suitable components (e.g., any suitablecloud computing components) that may communicate with first electronicdevice 100 and/or second electronic device 200 via communicationsnetwork 50. In some embodiments, server 70 may be a source of one ormore files, applications, or any other suitable resource that may beprovided to and utilized by first electronic device 100 and/or secondelectronic device 200 (e.g., application 103 and/or application 203).For example, server 70 may be configured as a media store that mayprovide first electronic device 100 and/or second electronic device 200with various resources or media items including, but not limited to,audio files, video files, text files, graphical object files, variousother multimedia files, various applications (e.g., a virtual drawingspace application), and the like. An example of such a media store thatmay be provided by server 70 may be the iTunes™ Store and/or the AppStore™, each of which is made available by Apple Inc. of Cupertino,Calif.

It should be noted that any mechanism or combination of mechanisms forenabling communication between communications circuitry 106 of firstelectronic device 100 and communications circuitry 206 of secondelectronic device 200 may sometimes be referred to collectively hereinas communications media. For example, as shown in FIG. 1, sharedcommunications link 51, first electronic device communications link 151,second electronic device communications link 251, communications network50, and/or server 70 may be referred to individually and/or collectivelyas communications media 55.

FIG. 2 shows a schematic view of a graphical display system 301 of firstelectronic device 100 of system 1 that may be provided to generate andmanipulate graphical data for presentation to a user of device 100. Forexample, in some embodiments, graphical display system 301 may generateand manipulate graphical data representations of two-dimensional and/orthree-dimensional objects that may define at least a portion of a visualscreen of information to be presented as an image on a display, such asdisplay 112 of first electronic device 100. Graphical display system 301may be configured to generate and manipulate realistic animated imagesin real time (e.g., using about 30 or more screens or frames persecond).

As shown in FIG. 2, for example, graphical display system 301 of firstelectronic device 100 may include a graphical command generating module304 that may define and generate one or more generated input commands305 that may be processed to create at least a portion of the graphicalcontents of each of the screens to be rendered for display by firstelectronic device 100. Such commands and graphical screen contents maybe based on the one or more applications being run by first electronicdevice 100 (e.g., application 103) as well as any input instructionsbeing received by first electronic device 100 (e.g., via input component110). The graphical screen contents can include free-form drawingstrokes, image content (e.g., photographic images), textual information(e.g., one or more alphanumeric characters in a text string), drawingshape objects, video data based on images of a video program, andcombinations thereof. For example, an application run by firstelectronic device 100 (e.g., application 103 of FIG. 1) may be anysuitable application that may provide a virtual canvas or workspace onwhich a user may create and manipulate graphical objects, such asfree-form drawing strokes, images, drawing shapes, and text strings(e.g., Photoshop™ or Illustrator™ by Adobe Systems Incorporated orMicrosoft Paint™ by Microsoft Corporation). Graphical command generatingmodule 304 may define and generate input commands 305 that may beprocessed to create at least a portion of these types of graphicalobjects on display 112. For example, graphical command generating module304 may define and generate input commands 305 that may be processed tocreate drawing stroke graphical objects, image graphical objects,drawing shape graphical objects, and/or text string graphical objects ona virtual canvas for display by graphical display system 301 on display112 of first electronic device 100.

Graphical object data may generally be represented or described in twoways or as two types of data (i.e., pixel data and analytical graphicobjects or “vector objects”). Graphical object data of the pixel datatype may be collections or arrays of one or more pixels (e.g., samplesof color and/or other information including transparency and the like)that may be provided in various raster or bitmap or pixmap layers on acanvas or workspace. On the other hand, graphical object data of thevector object type may be an abstract graphic entity (e.g., such thatits appearance, position, and orientation in a canvas or workspace maybe defined analytically through geometrical formulas, coordinates, andthe like). Some pixel data may be provided with additional position andorientation information that can specify the spatial relationship of itspixels relative to a canvas or workspace containing the pixel data,which may be considered a bitmap vector graphic object when placed in avector graphics document. Before the application of any additionaltransformation or deformation, such a bitmap vector object may beequivalent to a rectangular vector object texture-mapped to the pixeldata.

Graphical command generating module 304 may receive input information303 from various input sources for defining one or more graphical objectproperties of a graphical object that may be generated and presented ondisplay 112. For example, such input sources may be the one or moreapplications being run by first electronic device 100 (e.g., application103 of FIG. 1) and/or any user input instructions being received bydevice 100 (e.g., via input component 110 of first electronic device100, as shown in FIG. 2). In some embodiments, based on at least aportion of the received input information 303, graphical commandgenerating module 304 may define and generate one or more generatedinput commands 305 that may be processed to create at least a portion ofany suitable type of graphical content, such as a drawing stroke, animage, a string of text, a drawing shape, and the like. In someembodiments, the graphical object content may be at least partiallybased on one or more graphical object properties defined by receivedinput information 303.

For example, when graphical command generating module 304 generates aninput command 305 that may be processed to create at least a portion ofa drawing stroke graphical object, input information 303 may be receivedby module 304 to define at least a portion of that input command 305and, thus, one or more drawing stroke properties of that drawing strokegraphical object. Such input information 303 may be referred to hereinas drawing stroke graphical object input information 303.

A drawing stroke graphical object may be considered a path along which adrawing stroke input tool (e.g., a stamp) may be applied. Such a drawingstroke input tool may define a particular set of pixel data to beapplied on a virtual canvas when the stamp is used for creating adrawing stroke graphical object along a defined trail. For example, sucha trail may define a path on the canvas along which an associateddrawing stroke input tool may repeatedly apply its pixel data forgenerating a drawing stroke graphical object on the canvas to bedisplayed. A drawing stroke input tool may be defined by any suitabledrawing stroke input tool property or set of drawing stroke input toolproperties including, but not limited to, shape, size, pattern,orientation, hardness, color, transparency, spacing, and the like. Adrawing stroke trail may be defined by any suitable drawing stroke trailproperty or set of drawing stroke trail properties including, but notlimited to, starting point, end point, length, path, and the like.

Therefore, drawing stroke graphical object input information 303 maydefine one or more drawing stroke input tool properties and/or one ormore drawing stroke trail properties for a particular drawing strokegraphical object that may be at least partially created by processing acommand 305 generated by graphical command generating module 304 usingthat drawing stroke graphical object input information 303. Once drawingstroke graphical object input information 303 has been received bygraphical command generating module 304, graphical command generatingmodule 304 may define and generate at least one appropriate drawingstroke graphical object input command 305 that may be processed forcreating at least a portion of an appropriate drawing stroke graphicalobject.

As another example, when graphical command generating module 304generates an input command 305 that may be processed to create at leasta portion of an image graphical object, input information 303 may bereceived by module 304 to define at least a portion of that inputcommand 305 and, thus, one or more properties of that image graphicalobject. Such input information 303 may be referred to herein as imagegraphical object input information 303. An image graphical object may beany suitable image file that can be imported into a graphical objectdocument or canvas. For example, a property of an image graphical objectmay be an address at which image data of the image is stored as an imagefile (e.g., in memory 104 of first electronic device 100). An image filemay be in any suitable format for providing image content to graphicaldisplay system 301 of first electronic device 100 including, but notlimited to, a JPEG file, a TIFF file, a PNG file, a GIF file, and thelike. As another example, a property of an image graphical object may bethe size or position of the image in the graphical object canvas. Onceimage graphical object input information 303 has been received bygraphical command generating module 304, graphical command generatingmodule 304 may define and generate at least one appropriate imagegraphical object input command 305 that may be processed for creating atleast a portion of an appropriate image graphical object.

As another example, when graphical command generating module 304generates an input command 305 that may be processed to create at leasta portion of a text string graphical object, input information 303 maybe received by module 304 to define at least a portion of that inputcommand 305 and, thus, one or more properties of that text stringgraphical object. Such input information 303 may be referred to hereinas text string graphical object input information 303. For example, atext string graphical object may include one or more characters, such asa letter, number, punctuation, or other symbol that may be used in thewritten form of one or more languages. Symbol characters may include,but are not limited to, representations from a variety of categories,such as mathematics, astrology, astronomy, chess, dice, ideology,musicology, economics, politics, religion, warning signs, meteorology,and the like. A property of a text string graphical object may be theselection of one or more particular characters and/or a characteristicof a particular character. Such a characteristic may include, but is notlimited to, a font type (e.g., Arial or Courier), a style type (e.g.,bold or italic), a color, a character size, a position of the characteron the graphical object canvas, and the like. Once text string graphicalobject input information 303 has been received by graphical commandgenerating module 304, graphical command generating module 304 maydefine and generate at least one appropriate text string graphicalobject input command 305 that may be processed for creating at least aportion of an appropriate text string graphical object.

As yet another example, when graphical command generating module 304generates an input command 305 that may be processed to create at leasta portion of a drawing shape graphical object, input information 303 maybe received by module 304 to define at least a portion of that inputcommand 305 and, thus, one or more properties of that drawing shapegraphical object. Such input information 303 may be referred to hereinas drawing shape graphical object input information 303. For example, aproperty of a drawing shape graphical object may be a pre-defined shape(e.g., a box, a star, a heart, etc.), a free-form drawing inputindicative of a user-defined shape, or a characteristic of such a shape(e.g., color, size, position on the canvas, etc.). Once drawing shapegraphical object input information 303 has been received by graphicalcommand generating module 304, graphical command generating module 304may define and generate at least one appropriate drawing shape graphicalobject input command 305 that may be processed for creating at least aportion of an appropriate drawing shape graphical object.

Regardless of the type of graphical object to be created, a user mayinteract with one or more drawing applications running on firstelectronic device 100 (e.g., application 103 of FIG. 1) via inputcomponent 110 to generate suitable input information 303 for definingone or more of the graphical object properties of a graphical object.Alternatively or additionally, in other embodiments, an applicationrunning on first electronic device 100 may be configured toautomatically generate at least a portion of input information 303 fordefining one or more of the graphical object properties.

As shown in FIG. 2, for example, graphical display system 301 of firstelectronic device 100 may also include a graphical command processingmodule 308 that may process graphical object input commands 305generated by graphical command generating module 304 such that graphicalobjects may be created and presented to a user on display 112 of firstelectronic device 100. In some embodiments, as shown in FIG. 2, forexample, graphical command processing module 308 may be configured toprocess received input commands 305 for providing pixel array data 309for presentation on display 112. For example, graphical commandprocessing module 308 may be configured to interpret each input command305 and generate appropriate pixel array data 309 for representing thegraphical object described by each input command 305 on a virtual canvasof display 112.

Graphical command processing module 308 may utilize application 103 tointerpret commands 305 for generating graphical object content as pixelarray data 309 on a virtual canvas. For example, graphical commandprocessing module 308 may be configured to perform various types ofgraphics computations or processing techniques and/or implement variousrendering algorithms on graphical object content that module 308 maygenerate based on commands 305, such that module 308 may provide thegraphical data necessary to define at least a portion of the canvas tobe displayed on display 112. Such processing may include, but is notlimited to, matrix transformations, scan-conversions, variousrasterization techniques, various techniques for three-dimensionalvertices and/or three-dimensional primitives, texture blending, and thelike. For example, in some embodiments, graphical command processingmodule 308 may encompass at least a portion of the graphics library ofthe operating system of first device 100, which may be a code modulethat may handle function calls like “draw circle in bitmap” or “fillbitmap with color” or “draw this set of triangles in 3-dimensionalspace”, and that may appropriately modify the bitmap with commandsperformed by processor 102 (e.g., for software rendering), and/or whichmay be dedicated graphics processing hardware (e.g., for hardwareaccelerated rendering). The bitmap may be either a frame buffer in videomemory (e.g., a region of bytes that may directly represent the colorsof pixels on the display) or an off-screen buffer in main memory.

Pixel array data 309 generated by graphical command processing module308 may include one or more sets of pixel data, each of which may beassociated with a respective pixel of canvas 501 to be displayed bydisplay 112. For example, each of the sets of pixel data included inpixel array data 309 may be correlated with coordinate values thatidentify a particular one of the pixels of canvas 501 to be displayed bydisplay 112, and each pixel data set may include a color value for itsparticular pixel as well as any additional information that may be usedto appropriately shade and/or provide other cosmetic features for itsparticular pixel.

Graphical display system 301 of first electronic device 100 may also beconfigured to share one or more input commands 305 generated bygraphical command generating module 304 with one or more otherelectronic devices or servers. For example, as shown in FIG. 2,graphical command generating module 304 and/or graphical commandprocessing module 308 may be configured to provide one or more inputcommands 305 as one or more shared input commands 305 s tocommunications circuitry 106 of first electronic device 100. Sharedinput commands 305 s may then be transmitted by communications circuitry106 from first electronic device 100 to any other device (e.g., secondelectronic device 200 and/or server 70, via communications media 55).

Similarly, graphical display system 301 of first electronic device 100may also be configured to share at least a portion of pixel array data309 generated by graphical command processing module 308 with one ormore other electronic devices or servers. For example, as shown in FIG.2, graphical command processing module 308 may be configured to provideat least a portion of generated pixel array data 309 as shared pixelarray data 309 s to communications circuitry 106 of first electronicdevice 100. Shared pixel array data 309 s may then be transmitted bycommunications circuitry 106 from first electronic device 100 to anyother device (e.g., second electronic device 200 and/or server 70, viacommunications media 55).

Graphical display system 301 of first electronic device 100 may also beconfigured to receive one or more input commands from one or more otherelectronic devices or servers. For example, as shown in FIG. 2,graphical command processing module 308 may be configured to receive oneor more received input commands 305 r from communications circuitry 106of first electronic device 100. Received input commands 305 r may bereceived by communications circuitry 106 of first electronic device 100from any other device (e.g., second electronic device 200 and/or server70, via communications media 55). Graphical command processing module308 may utilize application 103 to interpret both generated inputcommands 305 provided by graphical command generating module 304 as wellas received input commands 305 r provided by communications circuitry106 for generating pixel array data 309 on a virtual canvas.

Similarly, graphical display system 301 of first electronic device 100may also be configured to receive pixel array data from one or moreother electronic devices or servers. For example, as shown in FIG. 2,graphical command processing module 308 may be configured to receivereceived pixel array data 309 r from communications circuitry 106 offirst electronic device 100. Received pixel array data 309 r may bereceived by communications circuitry 106 of first electronic device 100from any other device (e.g., second electronic device 200 and/or server70, via communications media 55). Graphical command processing module308 may utilize application 103 to generate pixel array data 309 bycombining any received pixel array data 309 r with any pixel array datagenerated by graphical command processing module 308 in response toinput commands 305 and received input commands 305 r.

FIG. 2 also shows a schematic view of a graphical display system 401 ofsecond electronic device 200 of system 1 that may be provided togenerate and manipulate graphical data for presentation to a user ofdevice 200. Graphical display system 401 of second electronic device 200may include a graphical command generating module 404 that may receiveinput information 403 (e.g., from input component 210 and/or application203 of second electronic device 200) and generate one or more inputcommands 405. Graphical display system 401 of second electronic device200 may also include a graphical command processing module 408 that mayreceive input commands 405 and generate pixel array data 409 (e.g., forpresentation on display 212 of second electronic device 200).

Graphical command generating module 404 and/or graphical commandprocessing module 408 may be configured to provide one or more inputcommands 405 as one or more shared input commands 405 s tocommunications circuitry 206 of second electronic device 200, which maythen transmit shared input commands 405 s from second electronic device200 to any other device (e.g., first electronic device 100 and/or server70, via communications media 55). For example, a particular shared inputcommand 405 s provided by graphical command generating module 404 and/orgraphical command processing module 408 of graphical display system 401of second electronic device 200 may be transmitted by communicationscircuitry 206 of second electronic device 200, via communications media55, and received by communications circuitry 106 of first electronicdevice 100 as a particular received input command 305 r, which may thenbe provided to graphical command processing module 308 of graphicaldisplay system 301 of first electronic device 100.

Similarly, graphical command processing module 408 may be configured toprovide at least a portion of generated pixel array data 409 as sharedpixel array data 409 s to communications circuitry 206, which may thentransmit shared pixel array data 409 s from second electronic device 200to any other device (e.g., first electronic device 100 and/or server 70,via communications media 55). For example, particular shared pixel arraydata 409 s provided by graphical command processing module 408 ofgraphical display system 401 of second electronic device 200 may betransmitted by communications circuitry 206 of second electronic device200, via communications media 55, and received by communicationscircuitry 106 of first electronic device 100 as particular receivedpixel array data 309 r, which may then be provided to graphical commandprocessing module 308 of graphical display system 301 of firstelectronic device 100.

Moreover, graphical command processing module 408 may be configured toreceive one or more received input commands 405 r from communicationscircuitry 206 of second electronic device 200, which may receivereceived input commands 405 r from any other device (e.g., firstelectronic device 100 and/or server 70, via communications media 55).For example, a particular shared input command 305 s provided bygraphical display system 301 to communications circuitry 106 of firstelectronic device 100, may be transmitted by communications circuitry106, via communications media 55, and received by communicationscircuitry 206 of second electronic device 200 as a particular receivedinput command 405 r, which may then be provided to graphical commandprocessing module 408 of graphical display system 401 of secondelectronic device 200.

Similarly, graphical command processing module 408 may be configured toreceive received pixel array data 409 r from communications circuitry206 of second electronic device 200, which may receive received pixelarray data 409 r from any other device (e.g., first electronic device100 and/or server 70, via communications media 55). For example,particular shared pixel array data 309 s provided by graphical commandprocessing module 308 to communications circuitry 106 of firstelectronic device 100, may be transmitted by communications circuitry106, via communications media 55, and received by communicationscircuitry 206 of second electronic device 200 as particular receivedpixel array data 409 r, which may then be provided to graphical commandprocessing module 408 of graphical display system 401 of secondelectronic device 200.

The type of data that may be exchanged or otherwise shared betweendevices may be either bitmap or vector data. The format of the dataexchanged between devices does not have to be identical to the formatused by the operating system and/or underlying hardware (e.g., thegraphics processing unit) of the devices. For example, graphical datamight be converted to and/or from a hardware-independent format beforebeing sent and/or after being received, which may to allow fordifferences in hardware platforms between devices (e.g., whetherintegers may be stored big-endian or little-endian, whether or not bothdevices conform to the IEEE 754-2008 floating point arithmeticspecification, etc.).

Each one of graphical display system 401, input information 403,graphical command generating module 404, generated input command 405,shared input command 405 s, received input command 405 r, graphicalcommand processing module 408, generated pixel array data 409, sharedpixel array data 409 s, and received pixel array data 409 r of secondelectronic device 200 may be the same as or substantially similar to arespective one of graphical display system 301, input information 303,graphical command generating module 304, generated input command 305,shared input command 305 s, received input command 305 r, graphicalcommand processing module 308, generated pixel array data 309, sharedpixel array data 309 s, and received pixel array data 309 r of firstelectronic device 100 and, therefore, may not be independently describedin greater detail. While, in some embodiments, graphical display system301 of first electronic device 100 and graphical display system 401 ofsecond electronic device 200 may be the same or substantially similargraphical display systems, in other embodiments, graphical displaysystem 301 of first electronic device 100 may have one or more differentand/or additional modules that graphical display system 401 of secondelectronic device 200 does not have, and vice versa. While, in someembodiments, graphical display system 301 of first electronic device 100and graphical display system 401 of second electronic device 200 may bethe same or substantially similar graphical display systems, in otherembodiments, graphical display system 301 of first electronic device 100may be configured to process or otherwise handle one or more differentand/or additional types of input commands and/or types of pixel arraydata that graphical display system 401 of second electronic device 200may not be configured to process or otherwise handle, and vice versa.

An illustrative example of how system 1 may manage collaboration on avirtual work of art may be described with reference to FIGS. 4A-4K.

FIGS. 4A-4K, for example, show first electronic device 100 with housing101 and display 112 presenting respective exemplary screens 500 a-500 kof visual information and second electronic device 200 with housing 201and display 212 presenting respective exemplary screens 600 a-600 k ofvisual information. As mentioned, first electronic device 100 and secondelectronic device 200 may be similar devices or different types ofdevices. For example, as shown, in FIGS. 4A-4K, first electronic device100 may be provided as a desktop computer or a notebook computer (e.g.,an iMac™ or a MacBook™ available by Apple Inc.) that may include adisplay 112 that may be distinct from a first user input component 110(e.g., a mouse coupled to display 112 via a first bus 116) and a seconduser input component 110 a (e.g., a keyboard coupled to display 112 viaa second bus 116 a), while second electronic device 200 may be providedas a portable tablet or telephone (e.g., an iPad™ or an iPhone™available by Apple Inc.) that may include a display 212 that may becombined with a first user input component 210 to provide an I/Ointerface component 211 (e.g., a touch screen), which may be distinctfrom a second user input component 210 a (e.g., a mechanical buttonprovided through housing 201).

At least a portion of the visual information of each one of screens 500a-500 k may be defined by graphical command generating module 304 and/orprocessed by graphical command processing module 308 of graphicaldisplay system 301, while at least a portion of the visual informationof each one of screens 600 a-600 k may be defined by graphical commandgenerating module 404 and/or processed by graphical command processingmodule 408 of graphical display system 401. As shown, screens 500 a-500k may present a user interface for a virtual drawing space applicationof first electronic device 100, with which a user may create andmanipulate graphical objects for making original works of art (e.g., avirtual drawing space application, such as application 103, that may besimilar to that of Photoshop™ by Adobe Systems Incorporated or MicrosoftPaint™ by Microsoft Corporation). It is to be understood, however, thatscreens 500 a-500 k are merely exemplary, and display 112 may presentany content representing any type of graphical objects and/or graphicalobject animations that may be at least partially generated and/orprocessed by graphical display system 301 of first electronic device100.

Similarly, as shown, screens 600 a-600 k may present a user interfacefor a virtual drawing space application of device 200 (e.g., application203), with which a user may create and manipulate graphical objects formaking original works of art. It is to be understood, however, thatscreens 600 a-600 k are merely exemplary, and display 212 may presentany content representing any type of graphical objects and/or graphicalobject animations that may be at least partially generated and/orprocessed by graphical display system 401 of second electronic device200.

For example, as shown in FIGS. 4A-4K, a virtual drawing spaceapplication of first electronic device 100 (e.g., application 103) mayprovide at least a portion of a canvas 501 on a portion of each one ofscreens 500 a-500 k in which various graphical objects may be presentedon display 112. At least a portion of canvas 501 may be provided in avirtual drawing workspace portion of each screen in which pixel data maybe created and/or manipulated for generating a virtual work of art 11.In some embodiments, the size of canvas 501 may dynamically change inresponse to various graphical objects that may be positioned on canvas501, such that canvas 501 may always be large enough to contain whateverobjects are generated for artwork 11. However, the amount of canvas 501that may actually be displayed on any of screens 500 a-500 k of display112 may vary from screen to screen as application 103 is utilized. Forexample, a user may zoom-in on a specific portion of canvas 501 suchthat only a portion of artwork 11 may be presented across the entirevirtual drawing workspace portion on display 112.

In some embodiments, a virtual drawing space application of first device100 (e.g., application 103) may also provide at least one artist menu510 on a portion of each one of screens 500 a-500 k of first device 100.Menu 510 may include one or more graphical input options that a user maychoose from to access various tools and functionalities of theapplication that may then be utilized by the user to create varioustypes of graphical objects in canvas area 501. Menu 510 may provide oneor more toolbars, toolboxes, palettes, buttons, or any other suitableuser interface submenus that may be one or more layers or windowsdistinct from canvas 501. For example, artist menu 510 may include oneor more suitable submenus, such as a graphical object type selectionsubmenu 513, a graphical object property selection submenu 523, and aninter-device submenu 527. It is to be understood, however, that submenus513, 523, and 527 of artist menu 510 are merely exemplary, and a virtualdrawing space application of first electronic device 100 (e.g.,application 103) may provide various other types of submenus that a usermay interact with for creating and/or manipulating content in artwork 11on canvas area 501.

As shown in FIGS. 4A-4K, for example, graphical object type selectionsubmenu 513 of artist menu 510 of first electronic device 100 mayinclude various graphical object type input options for selecting aparticular type of graphical object to be created on canvas 501 forartwork 11. For example, graphical object type selection submenu 513 mayinclude a free-form drawing stroke input option 512, which a user mayselect for creating one or more free-form drawing strokes on canvas 501(e.g., by repeatedly applying a stamp of a user-controlled virtual inputdrawing tool along a stroke trail on canvas 501). Graphical object typeselection submenu 513 may alternatively or additionally include a textstring input option 514, which a user may select for creating one ormore strings of characters on canvas 501. Graphical object typeselection submenu 513 may alternatively or additionally include adrawing shape input option 516, which a user may select for creating oneor more various drawing shapes on canvas 501. Moreover, graphical objecttype selection submenu 513 may alternatively or additionally include animage input option 518, which a user may select for importing one ormore video-based and/or photographic images into canvas 501. It is to beunderstood, however, that options 512, 514, 516, and 518 of graphicalobject type selection submenu 513 of artist menu 510 are merelyexemplary, and a virtual drawing space application of first electronicdevice 100 (e.g., application 103) may provide various other types ofgraphical object type input options that a user may interact with forcreating and manipulating content in artwork 11 on canvas 501.

In some embodiments, as also shown in FIGS. 4A-4K, for example, artistmenu 510 may include graphical object property selection submenu 523,which may provide various graphical object property input options forselecting particular properties of a graphical object to be created oncanvas 501. For example, graphical object property selection submenu 523may include a graphical object style input option 520, which a user mayinteract with to alter one or more various style properties of agraphical object to be created on canvas 501. Graphical object propertyselection submenu 523 may alternatively or additionally include agraphical object color input option 522, which a user may interact withto alter one or more various color properties of a graphical object tobe created on canvas 501. Moreover, graphical object property selectionsubmenu 523 may alternatively or additionally include a graphical objecteffect input option 524, which a user may interact with to alter one ormore various effect properties of a graphical object to be created oncanvas 501. It is to be understood, however, that options 520, 522, and524 of graphical object property selection submenu 523 of artist menu510 are merely exemplary, and a virtual drawing space application offirst electronic device 100 (e.g., application 103) may provide variousother types of graphical object property input options that a user mayinteract with for creating and manipulating content in artwork 11 oncanvas 501.

In some embodiments, as also shown in FIGS. 4A-4K, for example, artistmenu 510 may include inter-device submenu 527, which may provide variousoptions for regulating how a user of first electronic device 100 mayinteract with another device (e.g., second electronic device 200) forcollaborating on a shared work of art (e.g., artwork 11). For example,inter-device submenu 527 may include an input synch option 526, which auser of first device 100 may interact with to synchronize the currentactive user interface selections of first electronic device 100 (e.g.,the current active graphical object type selection(s) of submenu 513and/or the current active graphical object property selection(s) ofsubmenu 523) with the current active user interface selections ofanother device (e.g., the current active user interface selections ofsecond electronic device 200). Inter-device submenu 527 mayalternatively or additionally include an outline lock option 528, whicha user of first device 100 may interact with to fix an outline ofanother device's actively displayed canvas portion (e.g., an outline ofthe actively displayed canvas portion of a canvas of second electronicdevice 200) on canvas 501 of first electronic device 100. It is to beunderstood, however, that options 526 and 528 of inter-device submenu527 of artist menu 510 are merely exemplary, and a virtual drawing spaceapplication of first electronic device 100 (e.g., application 103) mayprovide various other types of inter-device input options that a usermay interact with for regulating how a user of first electronic device100 may interact with another device (e.g., second electronic device200) for collaborating on a shared work of art (e.g., artwork 11).

Similarly, as also shown in FIGS. 4A-4K, a virtual drawing spaceapplication 203 of second electronic device 200 may provide at least aportion of a canvas 601 on a portion of each one of screens 600 a-600 kin which various graphical objects may be presented on display 212. Atleast a portion of canvas 601 may be provided in a virtual drawingworkspace portion of each screen in which pixel data may be created andmanipulated for creating a user work of art (e.g., artwork 11). In someembodiments, the size of canvas 601 may dynamically change in responseto various graphical objects that may be positioned on canvas 601, suchthat canvas 601 may always be large enough to contain whatever objectsare generated for the artwork shown by device 200. However, the amountof canvas 601 that may actually be displayed on any of screens 600 a-600k of display 212 may vary from screen to screen as application 203 isutilized.

Virtual drawing space application 203 may also provide at least oneartist menu 610 on a portion of each one of screens 600 a-600 k ofsecond device 200. Like menu 510 of first device 100, menu 610 may alsoinclude one or more graphical input options that a user may choose fromto access various tools and functionalities of the application that maythen be utilized by the user to create various types of graphicalobjects in the work of art on canvas 601. For example, artist menu 610may include one or more suitable submenus, such as a graphical objecttype selection submenu 613, a graphical object property selectionsubmenu 623, and an inter-device submenu 627. It is to be understood,however, that submenus 613, 623, and 627 of artist menu 610 are merelyexemplary, and a virtual drawing space application of second electronicdevice 200 (e.g., application 203) may provide various other types ofsubmenus that a user may interact with for creating and manipulatingcontent in a work of art on canvas 601.

For example, as shown in FIGS. 4A-4K, artist menu 610 of second device200 may include some or all of the same options as menu 510 of firstdevice 100. In some embodiments, graphical object type selection submenu613 of menu 610 may include a free-form drawing stroke input option 612,a text string input option 614, a drawing shape input option 616, and/oran image input option 618. Alternatively or additionally, graphicalobject property selection submenu 623 of menu 610 may include agraphical object style input option 620, a graphical object color inputoption 622, and/or a graphical object effect input option 624. Moreover,alternatively or additionally, inter-device submenu 627 of menu 610 mayinclude an input synch option 626 and/or an outline lock option 628. Itis to be understood, however, that options 612, 614, 616, 618, 620, 622,624, 626, and 628 of submenus 613, 623, and 627 of artist menu 610 aremerely exemplary, and a virtual drawing space application of secondelectronic device 200 (e.g., application 203) may provide various othertypes of input options that a user may interact with for creating and/orediting an original work of art on canvas 601.

Each one of canvas 601, artist menu 610, graphical object type selectionsubmenu 613, free-form drawing stroke input option 612, text stringinput option 614, drawing shape input option 616, image input option618, graphical object property selection submenu 623, graphical objectstyle input option 620, graphical object color input option 622,graphical object effect input option 624, inter-device submenu 627,input synch option 626, and outline lock option 628 of second electronicdevice 200 may be the same as or substantially similar to a respectiveone of canvas 501, artist menu 510, graphical object type selectionsubmenu 513, free-form drawing stroke input option 512, text stringinput option 514, drawing shape input option 516, image input option518, graphical object property selection submenu 523, graphical objectstyle input option 520, graphical object color input option 522,graphical object effect input option 524, inter-device submenu 527,input synch option 526, and outline lock option 528 of first electronicdevice 100 and, therefore, may not be independently described in greaterdetail. While, in some embodiments, artist menu 510 of first electronicdevice 100 and artist menu 610 of second electronic device 200 may bepresented as the same or substantially similar artist menus, in otherembodiments, menu 510 of first electronic device 100 may present one ormore different and/or additional submenus or options that menu 610 ofsecond electronic device 200 may not present, and vice versa. Forexample, in some embodiments, menu 610 may not present a text stringinput option 614 (e.g., if second electronic device 200 is not providedwith a keyboard for a user of second electronic device 200 to interactwith for entering strings of text).

Virtual drawing space application 103 of first electronic device 100 maybe synched with virtual drawing space application 203 of secondelectronic device 200 such that a single work of art (e.g. artwork 11)may be presented on both first device 100 and second device 200, andsuch that the single work of art may be collaboratively created and/oredited through both user interactions with first device 100 and userinteractions with second device 200. First device 100 and second device200 may connect with one another in any suitable way such thatapplication 103 may be synched with application 203. For example, eachdevice may be configured to utilize any suitable service discoveryprotocol for communicating with one another via communications media 55,such as a zero configuration networking protocol (e.g., Bonjour™available by Apple Inc.).

Before or after devices 100 and 200 have established communicationbetween each another, at least one device may load a virtual drawingapplication. For example, first device 100 may initially loadapplication 103 into processor 102 (e.g., from memory 104 or from server70). Then, once communication has been established between first device100 and second device 200 via communications media 55, first device 100may instruct second device 200 to load a virtual drawing application(e.g., application 203) into processor 202. In some embodiments, firstdevice 100 may transmit a copy of application 103 to second device 200,which device 200 may load into processor 202 as application 203.Alternatively, first device 100 may instruct second device 200 to accessa suitable virtual drawing application 203 from server 70. In otherembodiments, second device 200 may already have application 203available in memory 204 and may receive an instruction from first device100 to load application 203 into processor 202. In yet otherembodiments, each device may already have an appropriate drawingapplication loaded, and the devices may communicate this fact to oneanother.

Once first device 100 and second device 200 have establishedcommunication between each other, and once an appropriate virtualdrawing application has been loaded by at least one of the devices, asingle virtual work of art may be shared between the two applications. Avirtual work of art may be any suitable document or file that may beaccessed by a virtual drawing application from any suitable source(e.g., a local device memory 104/204 or from a remote server 70). Forexample, application 103 of first device 100 may initially load artwork11 from memory 104 or server 70 and present artwork 11 on canvas 501.Artwork 11 may have been previously created and may be loaded byapplication 103 to edit the graphical contents of artwork 11.Alternatively, artwork 11 may be initially generated as a new virtualwork of art by application 103.

Once artwork 11 is loaded by application 103, and once first device 100and second device 200 have established communication between each other,artwork 11 may be shared between the two devices. In some embodiments,first device 100 may transmit to second device 200 both an instructionto load an appropriate drawing application 203 and a copy of artwork 11to be loaded by that drawing application 203 on second device 200.Alternatively, first device 100 may just send a copy of artwork 11 tosecond device 200, which may have already loaded application 203. In yetother embodiments, first device 100 may send an instruction to seconddevice 200 to load a copy of artwork 11 from an independent source(e.g., server 70). In still yet other embodiments, it may not benecessary for an entire copy of artwork 11 to be loaded by each deviceupon initial connection. For example, first device 100 may transmit onlya subregion of the pixel array data of artwork 11 to second device 200(e.g., if first device 100 detects that second device 200 has a smallerscreen or only wishes to initially display a particular portion ofartwork 11). In some embodiments, before transmitting any portion ofartwork 11 or instructing second device to load any portion of artwork11, first device 100 may initially ask second device 200 for thedimensions of its canvas 601, or screen resolution, or initial portionof its canvas 601 second device 200 wishes to initially display, andfirst device 100 may then share a portion of artwork 11 according to theresponse received from second device 200. In some embodiments, beforetransmitting any portion of artwork 11 or instructing second device toload any portion of artwork 11, a user may interact with first device100 to define an outline of second device 200 (e.g., an outline 602 ofFIG. 4F) on a portion of canvas 501, and first device 100 may then shareonly the portion of artwork 11 within that outline with second device200. Regardless of the various ways in which first device 100 and seconddevice 200 may be configured to not only establish communication withone another, but also to load the same artwork 11 in their respectivevirtual drawing applications 103 and 203, first device 100 and seconddevice 200 may be configured to collaboratively edit artwork 11 throughboth user interactions with first device 100 and user interactions withsecond device 200.

Application 103 of first device 100 and application 203 of second device200 may be the same application. Alternatively, application 103 may atleast be configured to handle at least some of the same commands asapplication 203 (e.g., commands 305/405). For example, althoughapplications 103 and 203 may not be the exact same binary code, certainportions of their source code may be the same and may share a commoncommand vocabulary, while other portions of their source code may bedevice-specific layers and/or platform-specific layers. Applications 103and 203 may be referred to as cross-platform applications. In someembodiments, first device 100 may be a device configured to run on afirst platform that may be different than a second platform on whichsecond device 200 may be configured to run, yet applications 103 and 203may still share a common portion of source code for handling orinterpreting a particular set of commands. For example, first device 100may be configured to run the Android™ operating system available fromGoogle Inc. of Mountain View, Calif., such that application 103 may bewritten in the Java programming language, while second device 200 may beconfigured to run the iOS™ operating system available from Apple Inc.,such that application 203 may be written in the Objective-C programminglanguage. However, although applications 103 and 203 may be configuredto run on different platforms and/or different devices, applications 103and 203 may share at least a portion of the same source code, and eachapplication may have its own abstraction layer of the common source codethat may be configured to call a platform-specific and/ordevice-specific portion of the code.

Regardless, application 103 and 203 may be configured to share the samesemantic application-specific information. Each application may have thesame semantics or semantic response when a command of a particularcommand set is received from another one of the applications. Therefore,all communication between application 103 of first device 100 andapplication 203 of second device 200 may be in terms relevant to eachapplication and not to any system-wide, device-specific, orplatform-specific events that aren't also application-specific events.For example, any communication between applications 103 and 203 thatrelate to coordinates may be defined in an application-specificcoordinate space. Each one of applications 103 and 203 may recognize andreceive any command in a command set that may be communicated fromanother one of the applications (e.g., commands 305/405). Although adevice-specific layer and/or a platform-specific layer of an applicationof a particular device may determine whether or not the application mayact on a particular command in a particular way, each application maystill receive and recognize that command.

In some embodiments, the bytes or other data that may be provided as agraphical input command may not necessarily be identical to the bytes orother data that a device's display subsystem may use to represent vectorobject data or pixel array data. An additional layer of translation maybe provided to make the shared commands and pixel data beplatform-independent, which may allow compatibility between devices(e.g., between devices with different CPU architectures). Additionally,vector or pixel array data may be compressed before being sent betweendevices over communications media 55 and may be decompressed by thereceiving device before being drawn to the screen or otherwiseinterpreted (e.g., to save bandwidth of the system).

There may be various ways in which devices can determine each others'capabilities. For example, as part of an initial synchronizationprocess, each device may send a message over communications media 55indicating which operations are supported by that device. Additionally,a first device may be configured to respond with an error code or anyother suitable communication type if a second device instructs the firstdevice to perform an operation that the first device does not support oris not currently able to handle. The second device may be configured toprocess such an error code and fall back to an alternate command (e.g.,the second device may send to the first device pixel array datacorresponding to the unsupported instruction). The scheme by which pixelarray data may be shared may be a part of a common command vocabulary.There can be a common, platform-independent format for pixel data thatall devices may be capable of sending and receiving. The specifics ofthis format (e.g., the order of bytes and color components, whetherpixel data is split into chunks for easier transport, whether or notcompression is used, etc.) may be defined in various ways by a partyresponsible for defining the common command set/network communicationprotocol for the system.

Once first device 100 has loaded application 103 and/or second device200 has loaded application 203, artwork 11 may be loaded by at least oneof the applications. For example, as shown in FIG. 4A, application 103may be loaded by first device 100 and artwork 11 may be loaded byapplication 103. As shown by screen 500 a of FIG. 4A, artwork 11 mayinitially include no graphical content. For example, application 103 mayinitially create artwork 11 as a new artwork 11. Next, application 103may either share artwork 11 with second device 200 (e.g., by instructingsecond device 200 to load application 203 and receive artwork 11 fromfirst device 100) before a user interacts with either device forgenerating new graphical content in artwork 11, or a user may interactwith first device to generate new graphical content in artwork 11 beforesharing artwork 11 with second device 200. As shown in FIG. 4A, forexample, artwork 11 may be shared with application 203 of second device200 such that artwork 11 is also displayed on canvas 601 of seconddevice 200.

As shown by screen 500 b of FIG. 4B, for example, once artwork 11 hasbeen loaded by application 103, a user of first electronic device 100may select drawing stroke input option 512 of submenu 513 of artist menu510 for creating one or more free-form drawing strokes in artwork 11 oncanvas 501 (e.g., user selection of option 512 may be shown by shadingindicia within option 512 on screen 500 b of FIG. 4B, although selectionof any option may be made apparent in any other suitable way, includingnon-visual ways). When a user selects drawing stroke input option 512,various additional options (not shown) may be made available to the userwith respect to one or more of submenu options 520, 522, and 524 ofgraphical object property selection submenu 523, such that a user mayselect one or more drawing stroke properties that may at least partiallydefine a drawing stroke graphical object to be created in artwork 11 oncanvas 501. For example, drawing stroke graphical object style inputoption 520 of property selection submenu 523 may allow the user toselect a drawing stroke input tool from a group of various pre-defineddrawing stroke input tools or stamps (e.g., a “circular pen” drawingstroke input tool, as shown in FIG. 4B), drawing stroke graphical objectcolor input option 522 of property selection submenu 523 may allow theuser to select a color from a group of various pre-defined drawingstroke colors (e.g., a color represented by “///” markings, as shown inFIG. 4B), and drawing stroke graphical object effect input option 524 ofproperty selection submenu 523 may allow the user to select one or moreeffects to be applied to the drawing stroke from a group of variouspre-defined drawing stroke effects (e.g., no effects, as shown in FIG.4B). It is to be understood that additional or alternative pre-defineddrawing stroke input tools of various other pre-defined shapes, colors,effects, and other various pre-defined drawing stroke graphical objectproperties may also be provided by submenu 523 of menu 510 when drawingstroke input option 512 of submenu 513 is selected.

Any selections made by the user with respect to the options provided bymenu 510 may be received by graphical display system 301 of firstelectronic device 100 for generating and displaying menu input contenton menu 510. For example, selections made by the user with respect tothe options provided by menu 510 may be received by graphical commandgenerating module 304 of graphical display system 301 as menu inputinformation 303. In some embodiments, a user may interact with menu 510to provide selections using any suitable pointing input component offirst electronic device 100 (e.g., mouse input component 110 of FIGS.4A-4K). For example, a user may interact with mouse input component 110to point and click a cursor (not shown) at one or more suitable portionsof screen 500 b of display 112 that may be presenting the appropriateselectable options of menu 510. It is to be understood, however, thatany suitable pointing input component may be used by a user to point toor otherwise identify a particular menu option provided by menu 510 andany suitable input gesture of that pointing input component or anotherinput component may be used to interact with that particular menu optionin any particular way.

When a user selectively interacts with options 512, 520, 522, and 524 ofmenu 510 for creating a drawing stroke graphical object with a circularpen drawing stroke input tool of a particular color and no effects, forexample, the selections may be received by graphical command generatingmodule 304 of graphical display system 301 as menu input information303, and graphical command generating module 304 may generate one ormore appropriate menu input commands 305 that may be representative ofthese menu selections. These menu input commands 305 may be processed bygraphical command processing module 308 to generate at least a portionof pixel array data 309 with pixel data that may represent these menuselections, and that pixel data may be presented on display 112 in menu510 or at any other suitable portion of the displayed interface.

For example, as shown by screen 500 b of FIG. 4B, in response to a userselecting drawing stroke input option 512 (e.g., with mouse inputcomponent 110), graphical command generating module 304 may receivecertain menu input information 303 and may then generate a particularmenu input command 305 (e.g., a menu input command with therepresentative syntax “COMMAND: CLASS=MENU INPUT; SELECT=MENU OPTION512”), which may be processed by graphical command processing module 308to generate at least a portion of pixel array data 309 with updated menupixel data that may present shading indicia at the portion of screen 500b identifying input option 512 in menu 510 on display 112. Similarly, asshown by screen 500 b of FIG. 4B, in response to a user selecting acircular pen drawing stroke graphical object style input option 520,graphical display system 301 may generate and present a rigid circlewithin the box identifying input option 520 in menu 510 on display 112.Moreover, as shown by screen 500 b of FIG. 4B, in response to a userselecting a particular color with input option 522 and no effect withinput option 524, graphical display system 301 may generate and presenta representation of that color (e.g., “///”) within the box identifyinginput option 522 in menu 510 on display 112 and a representation of noeffect (e.g., “none”) within the box identifying input option 524 inmenu 510 on display 112.

Once options 512, 520, 522, and 524 of menu 510 have been selected forcreating a drawing stroke graphical object (e.g., with a circular pendrawing stroke input tool of a particular color and no effects), andonce the selections have been received by graphical display system 301and represented on display 112 in menu 510, the user may then interactwith graphical display system 301 for generating one or more new drawingstroke graphical objects in artwork 11 on canvas 501 according to theselected options. Based on any appropriate drawing stroke graphicalobject input information 303, which may be generated by a user (e.g.,using input component 110 and/or 110 a) and/or by any applicationrunning on device 100 (e.g., application 103), graphical commandgenerating module 304 may be configured to define and generate at leastone new drawing stroke graphical object input command 305. This newdrawing stroke graphical object input command 305 may then be processedby graphical command processing module 308 as new drawing strokegraphical object pixel array data 309 and presented on display 112 incanvas 501.

For example, as also shown by screen 500 b of FIG. 4B, a user mayinteract with graphical display system 301 to generate a new drawingstroke graphical object 530 in artwork 11 on canvas 501. As shown,drawing stroke graphical object 530 of artwork 11 may include a straightdiagonal line extending along a trail path from a starting point P1 oncanvas 501 to an ending point P2 on canvas 501 with the selected drawingstroke properties of options 520, 522, and 524. For example, in responseto a user defining a trail path for a new drawing stroke graphicalobject (e.g., by dragging a cursor along canvas 501 from point P1 topoint P2 with mouse input component 110), graphical command generatingmodule 304 may receive certain drawing stroke input information 303 andthen generate a particular drawing stroke input command 305. Forexample, based on the currently selected properties of options 520, 522,and 524, and the trail path defined by points P1 and P2, graphicalcommand generating module 304 may generate a new drawing strokegraphical object input command 305, which may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE;START:P1; END:P2”. The new drawing stroke input command 305 generated bygraphical command generating module 304 may then be processed bygraphical command processing module 308 to generate at least a portionof new drawing stroke pixel array data 309 that may present new drawingstroke graphical object 530 at the appropriate position on canvas 501 ofscreen 500 b of display 112.

It is to be understood that the above representative syntax of newdrawing stroke input command 305 for generating new drawing strokegraphical object 530 is merely representative, and that any suitablesyntax may be used by application 103 of first electronic device 100 forgenerating a new drawing stroke input command 305 in response toreceived drawing stroke input information 303. The actual data that maybe shared between devices may be binary (e.g., one byte to indicate acommand class, two bytes to represent a coordinate value, four bytes torepresent a color, etc.). For example, a command to create a newgraphical object might include (1) a code indicating this commandcreates a new object, (2) the length in bytes of the data that follows,and (3) a sequence of attribute/value pairs. The attributes may berepresented as numeric codes. For example, a byte with a value of 1 mayrepresent “color” and may indicate that four bytes of color data (e.g.,red/green/blue/alpha) follow. As another example, a byte with a value of2 may represent “stroke width” and may indicate that one byte follows.

As yet another example, a byte with a value of 20 may represent “startpoint” and may indicate that four bytes follow (e.g., two for the Xcoordinate and two for the Y coordinate). The exact sequence ofattribute/value pairs sent may depend on the type of the object beingcreated. The absence of an attribute may indicate that a default valuecan be used. For example, a “new circle” command sent without a colorattribute may inform the recipient device to simply use the currentlyselected color.

Common attributes that may be shared among shape and drawing stroketools may be stroke color, interior color, line width, and initialposition. Shape tools may also send height and width values, as well asan identifier indicating the type of the shape (e.g., circle, square,diamond, etc.). A pen stroke may not have a two-dimensional size, but itcan treat the initial position as the starting point of the stroke, andsend an endpoint attribute. It may also send control points asattributes if the stroke is to be a Bezier curve or other spline. Theset of attributes can be orthogonal to the set of actions. For example,an action might be “create new object” or “modify existing object.” Bothactions may use the same attribute/value pairs, where the “create newobject” action may use the attributes to determine the appearance of thenew object, and the “modify existing object” action may use theattributes to describe which properties of the object should be changed.

Although only starting point P1 and ending point P2 of the trail of newdrawing stroke graphical object 530 may be defined by the exemplaryrepresentative syntax of new drawing stroke input command 305, it is tobe understood that, in other embodiments, multiple additional points ofthe trail may be defined by the new drawing stroke input command 305.For example, if the new drawing stroke is a straight line (e.g., as isshown in FIG. 4B by the straight diagonal line of drawing strokegraphical object 530 between starting point P1 and ending point P2),graphical command generating module 304 may only define a new drawingstroke input command 305 with a starting point and an ending point inorder for the new drawing stroke input command 305 to adequatelyinstruct graphical command processing module 308 to generate theappropriate path of the new drawing stroke graphical object on canvas501. However, if the new drawing stroke is not a straight line (e.g., adrawing stroke that follows a curved or otherwise non-linear path),graphical command generating module 304 may define a new drawing strokeinput command 305 with multiple additional points along the path betweenthe starting point and the ending point in order for the new drawingstroke input command 305 to adequately instruct graphical commandprocessing module 308 to generate the appropriate path of the newdrawing stroke graphical object on canvas 501.

In some embodiments, rather than generating a single new drawing strokeinput command 305 for a new drawing stroke graphical object to begenerated on canvas 501, graphical command generating module 304 maygenerate multiple new drawing stroke input commands 305, each of whichmay adequately instruct graphical command processing module 308 togenerate a particular portion of the new drawing stroke graphical objecton canvas 501. For example, as shown in FIG. 4B, the trail path ofdrawing stroke graphical object 530 may be defined by starting point P1,ending point P2, and an intermediate point P3, such that graphicalcommand generating module 304 may generate two drawing stroke graphicalobject input commands 305. The first of such two drawing strokegraphical object input commands 305 for defining drawing strokegraphical object 530 may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE;STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE; START:P1; END:P3”, while thesecond of such two drawing stroke graphical object input commands 305for defining drawing stroke graphical object 530 may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE;START:P3; END:P2”. Each one of these two drawing stroke input commands305 generated by graphical command generating module 304 may beprocessed by graphical command processing module 308 to generate atleast a portion of new drawing stroke pixel array data 309 that maypresent new drawing stroke graphical object 530 at the appropriateposition on canvas 501 of screen 500 b.

A first input command 305 defining a first portion of a graphical objectmay be processed by processing module 308 while a second input command305 defining a second portion of the graphical object is being generatedby command generating module 304 in order to decrease the latency ofsystem 1. That is, each one of multiple input commands 305 definingdifferent portions of a graphical object may be processed for displayingits particular portion of the graphical object as soon as thatparticular input command is received by processing module 308, ratherthan none of the multiple input commands 305 being processed until allof the multiple input commands 305 are received by processing module308. For example, following the example of drawing stroke graphicalobject 530 being defined by two drawing stroke input commands 305, thefirst drawing stroke input command 305 may be processed by processingmodule 308 for presenting a first portion of new drawing strokegraphical object 530 at the appropriate position on canvas 501 of screen500 b (i.e., the portion of new drawing stroke graphical object 530between points P1 and P3 defined by the first of the two drawing strokeinput commands 305) before and/or while command generating module 304may be generating the second drawing stroke input command 305 (i.e., theinput command 305 defining the portion of new drawing stroke graphicalobject 530 between points P3 and P2).

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, when applications103 and 203 are synched and have loaded common work of art 11, graphicalobject input commands generated by devices 100 and 200 may be shared bythe devices such that artwork 11 presented by each device may have thesame graphical object content. For example, at least some graphicalobject input commands 305 generated by graphical command generatingmodule 304 may be provided to communications circuitry 106 of firstelectronic device 100 as shared graphical object input commands 305 s. Ashared graphical object input command 305 s may be provided tocommunications circuitry 106 directly from graphical command generatingmodule 304 or from graphical command processing module 308 (e.g., aftergraphical command processing module 308 has received the graphicalobject input command 305 from graphical command generating module 304).Communications circuitry 106 may then provide the shared graphicalobject input command 305 s to communications circuitry 206 of secondelectronic device 200 via communications media 55, and communicationscircuitry 206 may provide the shared graphical object input command 305s as a received graphical object input command 405 r to graphicalcommand processing module 408 of graphical display system 401.

Therefore, continuing with the example of FIG. 4B, based on the selectedproperties of options 520, 522, and 524, and points P1 and P2 of thetrail path defined by new drawing stroke input information 303,graphical display system 301 may generate at least one new drawingstroke graphical object input command 305 that not only may be receivedand processed by graphical command processing module 308 of firstelectronic device 100 to generate at least a portion of new drawingstroke pixel array data 309 that may present new drawing strokegraphical object 530 at the appropriate position on canvas 501 of screen500 b of display 112, but that also may be received and processed (i.e.,as a received graphical object input command 405 r) by graphical commandprocessing module 408 of second electronic device 200 to generate atleast a portion of new drawing stroke pixel array data 409 that maypresent a new drawing stroke graphical object 630 at the appropriateposition on canvas 601 of screen 600 b of display 212. By sharing eachof the one or more new drawing stroke graphical object input commands305 that may define new drawing stroke graphical object 530 (e.g., asone or more shared drawing stroke graphical object input commands 305 sand, eventually, as one or more received drawing stroke graphical objectinput commands 405 r), both graphical command processing module 308 offirst device 100 and graphical command processing module 408 of seconddevice 200 may independently receive and process the same new drawingstroke graphical object input command(s) for generating and displaying anew drawing stroke graphical object of shared work of art 11 on bothcanvas 501 of first device 100 and canvas 601 of second device 200. Itis to be appreciated that, in some embodiments, no confirmation isrequired when a device receives a shared command. For example, after auser interacts with first device 100 to generate a graphical inputcommand 305 and that input command is shared with second device 200(e.g., as shared input command 305 s/received input command 405 r),second device 200 need not send any command or other data back to firstdevice 100 in order for second device to process the input command orfor first device to stop sharing the command.

Alternatively, as mentioned, at least some new drawing stroke graphicalobject pixel array data 309 generated by graphical command processingmodule 308 may be provided to communications circuitry 106 of firstelectronic device 100 as shared drawing stroke graphical object pixelarray data 309 s. Communications circuitry 106 may then provide theshared drawing stroke graphical object pixel array data 309 s tocommunications circuitry 206 of second electronic device 200 viacommunications media 55, and communications circuitry 206 may providethe shared drawing stroke graphical object pixel array data 309 s asreceived drawing stroke graphical object pixel array data 409 r tographical command processing module 408 of graphical display system 401.

Therefore, graphical command processing module 308 may process at leastone new drawing stroke graphical object input command 305 to generate atleast a portion of new drawing stroke pixel array data 309 that not onlymay present at least a portion of new drawing stroke graphical object530 at the appropriate position on canvas 501 of screen 500 b of display112, but that also may be received (i.e., as received drawing strokepixel array data 409 r) by graphical command processing module 408 ofsecond electronic device 200 to present at least a portion of newdrawing stroke graphical object 630 at the appropriate position oncanvas 601 of screen 600 b of display 212. By sharing the pixel arraydata 309 that may present new drawing stroke graphical object 530 (e.g.,as shared drawing stroke graphical object pixel array data 309 s and,eventually, as received drawing stroke graphical object pixel array data409 r), both graphical command processing module 308 of first device 100and graphical command processing module 408 of second device 200 mayindependently display a new drawing stroke graphical object of sharedwork of art 11 on both canvas 501 of first device 100 and canvas 601 ofsecond device 200. There may be semantics attached to shared pixel arraydata, but they may minimal compared to that of shared graphical inputcommands. For example, a chunk of pixel array data may contain thefollowing fields: (1) a width of the region in pixels; (2) a height ofthe region in pixels; (3) an X and Y coordinate pair where a particularpoint of the region (e.g., the upper-left point) is to be placed on thecanvas; and (4) the pixel data. Such pixel data may include a sequenceof, for example, 4-byte values that may indicate pixel colors startingat the upper-left point and progressing to the right and downward. Thenumber of pixels in this sequence may be configured to equal the widthvalue times the height value for the command to be well-formed.

However, this approach of sharing pixel array data may add unnecessarylatency to system 1, as graphical display system 301 of first device 100may have to generate new drawing stroke pixel array data 309 from a newdrawing stroke graphical object input command 305 before sharing newdrawing stroke pixel array data 309 with second device 200, whereas thepreviously described approach may allow graphical display system 301 offirst device 100 to share a new drawing stroke graphical object inputcommand 305 with second device 200 before and/or while graphical displaysystem 301 of first device 100 may generate new drawing stroke pixelarray data 309 from the new drawing stroke graphical object inputcommand 305. Moreover, the bandwidth that may be required bycommunications media 55 to communicate a drawing stroke graphical objectinput command 305 from first device 100 to second device 200 (e.g., asshared drawing stroke graphical object input command 305 s/receiveddrawing stroke graphical object input command 405 r) may besignificantly less than the bandwidth that may be required bycommunications media 55 to communicate drawing stroke pixel array data309 from first device 100 to second device 200 (e.g., as shared drawingstroke pixel array data 309 s/received drawing stroke pixel array data409 r). Each particular command generated and/or shared by system 1 maybe smaller in size (e.g., may require less bandwidth to be transmittedacross communications media 55) than that of the pixel array data thatmay be generated by processing the particular command. By utilizingcommon semantics in response to particular shared input commands,graphical display system 301 of first device 100 and graphical displaysystem 401 of second device 200 may share the input commands generatedby one another so that each device may independently process the sameinput commands and so that each device may display the resultant pixelarray data with reduced latency.

However, in some embodiments, despite utilizing common semantics inresponse to particular input commands, first electronic device 100 andsecond electronic device 200 may have different resources orcapabilities, and may sometimes rather share pixel array data generatedby one of the two devices for updating collaborative artwork 11 insteadof or in addition to sharing input commands generated by one of the twodevices for updating collaborative artwork 11. For example, uponreceiving a received drawing stroke graphical object input command 405r, graphical display system 401 may determine that second electronicdevice 200 is not able to or does not wish to generate new drawingstroke pixel array data 409 from the received drawing stroke graphicalobject input command 405 r. For example, graphical display system 401may determine that second device 200 is trying to conserve its powersupply 208 and does not have enough processing power to utilize forgenerating new drawing stroke pixel array data 409 from the receiveddrawing stroke graphical object input command 405 r. As another example,graphical display system 401 may determine that second device 200 maylack a graphics processing unit powerful enough to perform a complexoperation for processing a received graphical input command (e.g., afilter that renders an image with simulated oil pastels or paintbrushstrokes in real time). As yet another example, graphical display system401 may determine that first device 100 may have native support forhardware-accelerated image processing filters (e.g., that first device100 may be an iMac™ with a Core Image library), and that it may befaster to use the native functionality of first device 100 and thenreceive the results from first device 100 over communications media 55rather than perform the operation on second device 200. In someembodiments, in response to such a determination, rather than generatingnew drawing stroke pixel array data 409 from received drawing strokegraphical object input command 405 r with graphical command processingmodule 408, graphical display system 401 of second device 200 mayinstead send a command to graphical display system 301 of first device100 that may instruct graphical display system 301 to transmit newdrawing stroke pixel array data 309 (e.g., as shared drawing strokepixel array data 309 s) to graphical command processing module 408(e.g., as received drawing stroke pixel array data 409 r), such thatgraphical command processing module 408 may avoid having toindependently process received drawing stroke graphical object inputcommand 405 r.

As shown by screen 500 c of FIG. 4C, for example, a user of firstelectronic device 100 may select text string input option 514 of submenu513 of artist menu 510 for creating one or more text string graphicalobjects in artwork 11 on canvas 501 (e.g., selection of option 514 maybe shown by shading indicia within option 514 on FIG. 4C, althoughselection of any option may be made apparent in any other suitable way,including non-visual ways). When a user selects text string input option514, various options (not shown) may be made available to the user withrespect to one or more of submenu options 520, 522, and 524 of graphicalobject property selection submenu 523, such that a user may select oneor more text string properties that may at least partially define a textstring graphical object to be created in artwork 11 on canvas 501. Forexample, text string graphical object style input option 520 of propertyselection submenu 523 may allow the user to select a font type from agroup of various pre-defined font types (e.g., a “Arial” text stringstyle, as shown in FIG. 4C), text string graphical object color inputoption 522 of property selection submenu 523 may allow the user toselect a color from a group of various pre-defined text string colors(e.g., a solid color represented by “▪”, as shown in FIG. 4C), and textstring graphical object effect input option 524 of property selectionsubmenu 523 may allow the user to select one or more effects to beapplied to the text string from a group of various pre-defined textstring effects (e.g., an underlining effect, as shown in FIG. 4C). It isto be understood that additional or alternative pre-defined text stringinput tools of various other pre-defined fonts, colors, effects, andother various pre-defined text string graphical object properties mayalso be provided by submenu 523 of menu 510 when text string inputoption 514 of submenu 513 is selected.

Any interactions made by the user with respect to the options providedby menu 510 may be received by graphical display system 301 of firstelectronic device 100 for generating and displaying new menu content inmenu 510. For example, when a user selects options 514, 520, 522, and524 of menu 510 for creating a text string graphical object with anArial font of a particular color and an underlining effect, for example,the menu selections may be received by graphical command generatingmodule 304 of graphical display system 301 as menu input information303, and graphical command generating module 304 may generate one ormore appropriate menu input commands 305 representative of these menuselections. These menu input commands 305 may be processed by graphicalcommand processing module 308 to generate at least a portion of pixelarray data 309 with pixel data that may represent these menu selections,and that menu selection pixel data may be presented on display 112 inmenu 510.

For example, as shown by screen 500 c of FIG. 4C, in response to a userselecting text string input option 514 (e.g., with mouse input component110), graphical command generating module 304 may receive certain menuinput information 303 and then generate a particular menu input command305 (e.g., a menu input command with the representative syntax “COMMAND:CLASS=MENU INPUT; SELECT=MENU OPTION 514”), which may be processed bygraphical command processing module 308 to generate at least a portionof pixel array data 309 with updated menu pixel data that may presentshading indicia at the portion of screen 500 c identifying input option514 in menu 510 of display 112. Submenu 513 may be configured such thatonly one of options 512, 514, 516, and 518 may be selected at any giventime. Therefore, the shading indicia identifying input option 512 onscreen 500 b of FIG. 4B may be removed. Similarly, as shown by screen500 c of FIG. 4C, in response to a user selecting an Arial font at styleinput option 520, graphical display system 301 may generate and present“Arial” within the box identifying input option 520 in menu 510 ofdisplay 112. Moreover, as shown by screen 500 c of FIG. 4C, in responseto a user selecting a particular color with input option 522 and anunderlining effect with input option 524, graphical display system 301may generate and present a representation of that color (e.g., “▪”)within the box identifying input option 522 in menu 510 of display 112and a representation of the underlining effect (e.g., “_”) within thebox identifying input option 524 in menu 510 of display 112. It is to beunderstood that a menu input command generated with respect to aparticular platform's user interface might not be shared with anotherdevice (e.g., if input synch 526/626 is not selected). Different devicesmay have entirely different user interfaces, with different menuschemes, button layouts, presence or lack of certain features, and thelike. Therefore, certain menu input commands may not affect the userinterface of one device like it may affect another.

Once options 514, 520, 522, and 524 of menu 510 have been selected forcreating a text string graphical object (e.g., with an Arial font of aparticular color and an underlining effect), and once the selectionshave been received by graphical display system 301 and represented ondisplay 112 in menu 510, the user may then interact with device 100 forgenerating one or more glyphs of text on canvas 501 according to theselected options. Based on any appropriate text string graphical objectinput information 303, which may be generated by a user (e.g., usinginput component 110 and/or input component 110 a) and/or any applicationrunning on device 100 (e.g., application 103), graphical commandgenerating module 304 may be configured to define and generate at leastone new text string graphical object input command 305. This new textstring graphical object input command 305 may then be processed bygraphical command processing module 308 as new text string graphicalobject pixel array data 309 and presented on display 112.

For example, as also shown by screen 500 c of FIG. 4C, a user mayinteract with graphical display system 301 to generate a new text stringgraphical object 540 in artwork 11 on canvas 501. As shown, text stringgraphical object 540 may include the text “OK” beginning at a startingpoint P4 on canvas 501 with the selected text string properties ofoptions 520, 522, and 524. For example, in response to a user defining astarting point P4 of a new text string graphical object (e.g., bypointing a cursor at point P4 on canvas 501 with mouse input component110) and defining the characters “OK” of the new text string graphicalobject (e.g., by selecting the appropriate keys on keyboard inputcomponent 110 a), graphical command generating module 304 may receivecertain text string input information 303 and then generate a particulartext string input command 305. For example, based on the selectedproperties of options 520, 522, and 524, starting point P4, andcharacters “OK”, graphical command generating module 304 may generate anew text string graphical object input command 305, which may have thefollowing representative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=TEXT STRING; STYLE=ARIAL; COLOR=BLACK; EFFECT=UNDERLINE; START:P4;CHARACTER(S):OK”. The new text string input command 305 generated bygraphical command generating module 304 may then be processed bygraphical command processing module 308 to generate at least a portionof new text string pixel array data 309 that may present new text stringgraphical object 540 at the appropriate position on canvas 501 of screen500 c of display 112.

It is to be understood that the above representative syntax of new textstring input command 305 for generating new text string graphical object540 is merely representative, and that any suitable syntax may be usedby application 103 of first electronic device 100 for generating a newtext string input command 305 in response to received text string inputinformation 303. Although only starting point P4 of new text stringgraphical object 540 may be defined by the exemplary representativesyntax of new text string input command 305, it is to be understoodthat, in other embodiments, multiple additional points on canvas 501with respect to the new text string graphical object may be defined bythe new text string input command 305.

In some embodiments, rather than generating a single new text stringinput command 305 for a new text string graphical object to be generatedon canvas 501, graphical command generating module 304 may generatemultiple new text string input commands 305, each of which mayadequately instruct graphical command processing module 308 to generatea particular portion of the new text string graphical object on canvas501. For example, as shown in FIG. 4C, the starting position of textstring character “O” of text string graphical object 540 may be definedby starting point P4, and the starting point of text string character“K” of text string graphical object 540 may be defined by starting pointP5, such that graphical command generating module 304 may generate twotext string graphical object input commands 305. The first of such twotext string graphical object input commands 305 for defining text stringgraphical object 540 may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=TEXT STRING; STYLE=ARIAL;COLOR=BLACK; EFFECT=UNDERLINE; START:P4; CHARACTER(S):O”, while thesecond of such two text string graphical object input commands 305 fordefining text string graphical object 540 may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=TEXTSTRING; STYLE=ARIAL; COLOR=BLACK; EFFECT=UNDERLINE; START:P5;CHARACTER(S):K”. Each one of these two text string input commands 305generated by graphical command generating module 304 may be processed bygraphical command processing module 308 to generate at least a portionof new text string pixel array data 309 that may present new text stringgraphical object 540 at the appropriate position on canvas 501 of screen500 c of display 112.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, continuing with theexample of FIG. 4C, based on the selected properties of options 520,522, and 524, point P4, and characters “OK” defined by text stringgraphical object input information 303 and received by first electronicdevice 100, graphical command generating module 304 may generate a newtext string graphical object input command 305 that not only may bereceived and processed by graphical command processing module 308 offirst electronic device 100 to generate at least a portion of newdrawing stroke pixel array data 309 for presenting new text stringgraphical object 540 at the appropriate position on canvas 501 of screen500 c of display 112, but that also may be received and processed (i.e.,as a received graphical object input command 405 r) by graphical commandprocessing module 408 of second electronic device 200 to generate atleast a portion of new text string pixel array data 409 for presenting anew text string graphical object 640 at the appropriate position oncanvas 601 of screen 600 c of display 212. By sharing the new textstring graphical object input command 305 (e.g., as shared text stringgraphical object input command 305 s and, eventually, as received textstring graphical object input command 405 r), both graphical commandprocessing module 308 of first device 100 and graphical commandprocessing module 408 of second device 200 may independently receive andprocess the same new text string graphical object input command forgenerating a new text string graphical object of artwork 11 on bothcanvas 501 of first device 100 and canvas 601 of second device 200.

Alternatively, as mentioned, at least some new text string graphicalobject pixel array data 309 generated by graphical command processingmodule 308 may be provided to communications circuitry 106 of firstelectronic device 100 as shared text string graphical object pixel arraydata 309 s. Communications circuitry 106 may then provide the sharedtext string graphical object pixel array data 309 s to communicationscircuitry 206 of second electronic device 200 via communications media55, and communications circuitry 206 may provide the shared text stringgraphical object pixel array data 309 s as received text stringgraphical object pixel array data 409 r to graphical command processingmodule 408 of graphical display system 401. Therefore, graphical commandprocessing module 308 may process a new text string graphical objectinput command 305 to generate at least a portion of new text stringpixel array data 309 that not only may present new text string graphicalobject 540 at the appropriate position on canvas 501 of screen 500 c ofdisplay 112, but that also may be received (i.e., as received textstring pixel array data 409 r) by graphical command processing module408 of second electronic device 200 to present new text string graphicalobject 640 at the appropriate position on canvas 601 of screen 600 c ofdisplay 212.

Rather than a user interacting with menu 510 of first device 100 togenerate input information for defining new graphical object content ofartwork 11 to be displayed on canvas 501 and/or 601, a user maysimilarly interact with menu 610 of second device 200 to generate inputinformation for defining new graphical object content of artwork 11. Asshown by screen 600 d of FIG. 4D, for example, a user of secondelectronic device 200 may select shape input option 616 of submenu 613of artist menu 610 for creating one or more shapes on canvas 601 (e.g.,selection of option 616 may be shown by shading indicia within option616 on FIG. 4D, although selection of any option may be made apparent inany other suitable way, including non-visual ways). When a user selectsshape input option 616, various options (not shown) may be madeavailable to the user with respect to one or more of submenu options620, 622, and 624 of graphical object property selection submenu 623,such that a user may select one or more shape properties that may atleast partially define a shape graphical object to be created in artwork11 on canvas 601. For example, shape graphical object style input option620 of property selection submenu 623 may allow the user to select ashape type from a group of various pre-defined shape types (e.g., atriangle style shape, as shown in FIG. 4D), shape graphical object colorinput option 622 of property selection submenu 623 may allow the user toselect a color from a group of various pre-defined shape colors (e.g., acolor represented by “\\\” markings, as shown in FIG. 4D), and shapegraphical object effect input option 624 of property selection submenu623 may allow the user to select one or more effects to be applied tothe shape from a group of various pre-defined shape effects (e.g., noeffects, as shown in FIG. 4D). It is to be understood that additional oralternative pre-defined shapes of various other pre-defined colors,effects, and other various pre-defined shape graphical object propertiesmay also be provided by submenu 623 of menu 610 when shape input option616 of submenu 613 is selected.

Any interactions made by the user with respect to the options providedby menu 610 may be received by graphical display system 401 of secondelectronic device 200 for generating and displaying new menu content incanvas area 601. For example, when a user selects options 616, 620, 622,and 624 of menu 610 for creating a triangle shape graphical object of aparticular color and no effects, the selections may be received bygraphical command generating module 404 of graphical display system 401as new menu input information 403, and graphical command generatingmodule 404 may generate one or more appropriate new menu input commands405 representative of these menu selections. These menu input commands405 may be processed by graphical command processing module 408 togenerate at least a portion of pixel array data 409 with pixel data thatmay represent these menu selections, and that menu selection pixel datamay be presented on display 212 in menu 610.

For example, as shown by screen 600 d of FIG. 4D, in response to a userselecting shape input option 616 (e.g., with touch screen I/O component211), graphical command generating module 404 may receive certain menuinput information 403 and then generate a particular menu input command405 (e.g., a menu input command with the representative syntax “COMMAND:CLASS=MENU INPUT; SELECT=MENU OPTION 616”), which may be processed bygraphical command processing module 408 to generate at least a portionof pixel array data 409 with updated menu pixel data that may presentshading indicia at the portion of screen 600 d identifying input option616 in menu 610 of display 212. Similarly, as shown by screen 600 d ofFIG. 4D, in response to a user selecting a triangle shape at style inputoption 620, graphical display system 401 may generate and present a “A”within the box identifying input option 620 in menu 610 of display 212.Moreover, as shown by screen 600 d of FIG. 4D, in response to a userselecting a particular color with input option 622 and no effects withinput option 624, graphical display system 401 may generate and presenta representation of that color (e.g., “\\\”) within the box identifyinginput option 622 in menu 610 of display 212 and a representation of noeffect (e.g., “none”) within the box identifying input option 624 inmenu 610 of display 212.

Once options 616, 620, 622, and 6524 of menu 610 have been selected forcreating a shape graphical object (e.g., a triangle shape of aparticular color with no effects), and once the selections have beenreceived by graphical display system 401 and represented on display 212in menu 610, the user may then interact with device 200 for generatingat least one triangle shape on canvas 601 according to the selectedoptions. Based on any appropriate shape graphical object inputinformation 403, which may be generated by a user (e.g., using inputcomponent 210 and/or input component 210 a) and/or any applicationrunning on device 200 (e.g., application 203), graphical commandgenerating module 404 may be configured to define and generate at leastone new shape graphical object input command 405. This new shapegraphical object input command 405 may then be processed by graphicalcommand processing module 408 as new shape graphical object pixel arraydata 409 and presented on display 212.

For example, as also shown by screen 600 d of FIG. 4D, a user mayinteract with graphical display system 401 to generate a new shapegraphical object 650 in artwork 11 on canvas 601. As shown, shapegraphical object 650 may include a triangle with a first corner at apoint P6 on canvas 601, a second corner at point P7 on canvas 601, and athird corner at point P8 on canvas 601, with the selected shapeproperties of options 620, 622, and 624. For example, in response to auser defining a point P6 on canvas 601 for positioning a lower-leftcorner of a new triangle shape graphical object (e.g., by touching pointP6 on canvas 601 with touch screen input component 210), and additionalpoints P7 and P8 on canvas 601 for respectively positioning a top cornerand a lower-right corner of the new triangle shape graphical object,graphical command generating module 404 may receive certain shape inputinformation 403 and then generate a particular shape input command 405.For example, based on the selected properties of options 620, 622, and624, and points P6-P8, graphical command generating module 404 maygenerate a new shape graphical object input command 405, which may havethe following representative syntax: “COMMAND: CLASS=GRAPHICAL OBJECTINPUT; TYPE=SHAPE; STYLE=TRIANGLE; COLOR=\\\; EFFECT=NONE; CORNER1:P6;CORNER2:P7; CORNER3:P8”. The new shape input command 405 generated bygraphical command generating module 404 may then be processed bygraphical command processing module 408 to generate at least a portionof new shape pixel array data 409 that may present new shape graphicalobject 650 at the appropriate position on canvas 601 of screen 600 d ofdisplay 212. It is to be understood that the above representative syntaxof new shape input command 405 for generating new shape graphical object650 is merely representative, and that any suitable syntax may be usedby application 203 of second electronic device 200 for generating a newshape input command 405 in response to received shape input information403.

In some embodiments, rather than generating a single new shape inputcommand 405 for a new shape graphical object to be generated on canvas601, graphical command generating module 404 may generate multiple newshape input commands 405, each of which may adequately instructgraphical command processing module 408 to generate a particular portionor configuration of the new shape graphical object 650 on canvas 601.For example, as shown in FIG. 4D, when a user has only defined a pointP6 on canvas 601 for positioning a lower-left corner of a new triangleshape graphical object, but has not yet defined point P7 or point P8, adefault position for the top corner of the triangle may be defined by adefault point P7′ and a default position for the lower-right corner ofthe triangle may be defined by a default point P8′ (e.g., based on adefault size and/or a default orientation of the shape), such thatgraphical command generating module 404 may generate at least two shapegraphical object input commands 405. The first of such two shapegraphical object input commands 405 for defining shape graphical object650 may be generated only after the user has defined point P6 and mayhave the following representative syntax: “COMMAND: CLASS=GRAPHICALOBJECT INPUT; TYPE=SHAPE; STYLE=TRIANGLE; COLOR=\\\; EFFECT=NONE;CORNER1:P6; CORNER2:P7′; CORNER3:P8′”, while the second of such twoshape graphical object input commands 405 for defining shape graphicalobject 650 may be generated after the user has defined point P6 and thenpoint P7 and may have the following representative syntax: “COMMAND:CLASS=GRAPHICAL OBJECT INPUT; TYPE=SHAPE; STYLE=TRIANGLE; COLOR=\\\;EFFECT=NONE; CORNER1:P6; CORNER2:P7; CORNER3:P8″” (e.g., where point P8″may be at a default position for the lower-right corner of the trianglewhen the user has defined both point P6 and point P7, but not yet pointP8; although as shown in FIG. 4D, point P8″ may be the same as pointP8). Each one of these two shape input commands 405 generated bygraphical command generating module 404 may be processed by graphicalcommand processing module 408 to generate at least a portion of newshape pixel array data 409 that may present new shape graphical object650 at the appropriate position on canvas 601 of screen 600 d of display212.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, continuing with theexample of FIG. 4D, based on the selected properties of options 620,622, and 624, and points P6-P8 defined by shape graphical object inputinformation 603 and received by second electronic device 200, graphicalcommand generating module 404 may generate at least one new shapegraphical object input command 405 that not only may be received andprocessed by graphical command processing module 408 of secondelectronic device 200 to generate at least a portion of new shape pixelarray data 409 for presenting new shape graphical object 650 at theappropriate position on canvas 601 of screen 600 d of display 212, butthat also may be received and processed (i.e., as a received graphicalobject input command 305 r) by graphical command processing module 308of first electronic device 100 to generate at least a portion of newshape pixel array data 309 that may present a new shape graphical object550 at the appropriate position on canvas 501 of screen 500 d of display112. By sharing at least one new shape graphical object input command405 (e.g., as shared shape graphical object input command 405 s and,eventually, as received shape graphical object input command 305 r),both graphical command processing module 408 of second device 200 andgraphical command processing module 308 of first device 100 mayindependently receive and process the same new shape graphical objectinput command for generating a new shape graphical object of artwork 11on both canvas 501 of first device 100 and canvas 601 of second device200.

Alternatively, at least some new shape graphical object pixel array data409 generated by graphical command processing module 408 may be providedto communications circuitry 206 of second electronic device 200 asshared shape graphical object pixel array data 409 s. Communicationscircuitry 206 may then provide the shared shape graphical object pixelarray data 409 s to communications circuitry 106 of first electronicdevice 100 via communications media 55, and communications circuitry 106may provide the shared shape graphical object pixel array data 409 s asreceived shape graphical object pixel array data 309 r to graphicalcommand processing module 308 of graphical display system 301.Therefore, graphical command processing module 408 may process a newshape graphical object input command 405 to generate at least a portionof new shape pixel array data 409 that not only may present new shapegraphical object 650 at the appropriate position on canvas 601 of screen600 d of display 212, but that also may be received (i.e., as receivedshape pixel array data 309 r) by graphical command processing module 308of first electronic device 100 to present new shape graphical object 550at the appropriate position on canvas 501 of screen 500 d of display112.

As shown by screen 600 e of FIG. 4E, for example, a user of secondelectronic device 200 may select image input option 618 of submenu 613of artist menu 610 for creating one or more images on canvas 601 (e.g.,selection of option 618 may be shown by shading indicia within option618 on FIG. 4E, although selection of any option may be made apparent inany other suitable way, including non-visual ways). When a user selectsimage input option 618, various options (not shown) may be madeavailable to the user with respect to one or more of submenu options620, 622, and 624 of graphical object property selection submenu 623,such that a user may select one or more image properties that may atleast partially define an image graphical object to be created inartwork 11 on canvas 601. For example, image graphical object styleinput option 620 of property selection submenu 623 may allow the user toselect a particular image file from a group of various image files thatmay be accessible to second device 200 (e.g., an image of a car, asshown in FIG. 4E), image graphical object color input option 622 ofproperty selection submenu 623 may allow the user to select a color orcolor scheme from a group of various pre-defined image colors or colorschemes (e.g., a black and white color scheme represented, as shown inFIG. 4E), and image graphical object effect input option 624 of propertyselection submenu 623 may allow the user to select one or more effectsto be applied to the image from a group of various pre-defined imageeffects (e.g., no effects, as shown in FIG. 4E). It is to be understoodthat additional or alternative pre-defined images of various otherpre-defined colors, effects, and other various pre-defined imagegraphical object properties may also be provided by submenu 623 of menu610 when image input option 618 of submenu 613 is selected.

Any selections made by the user with respect to the options provided bymenu 610 may be received by graphical display system 401 of secondelectronic device 200 for generating and displaying new menu content inmenu 610. For example, when a user selects options 618, 620, 622, and624 of menu 610 for creating an image graphical object of a car of aparticular color and no effects, the selections may be received bygraphical command generating module 404 of graphical display system 401as new menu input information 403, and graphical command generatingmodule 404 may generate one or more appropriate new menu input commands405 representative of these menu selections. These menu input commands405 may be processed by graphical command processing module 408 togenerate at least a portion of pixel array data 409 with pixel data thatmay represent these menu selections, and that menu pixel array data maybe presented on display 212 in menu 610.

For example, as shown by screen 600 e of FIG. 4E, in response to a userselecting image input option 618 (e.g., with touch screen I/O component211), graphical command generating module 404 may receive certain menuinput information 403 and then generate a particular menu input command405 (e.g., a menu input command with the representative syntax “COMMAND:CLASS=MENU INPUT; SELECT=MENU OPTION 618”), which may be processed bygraphical command processing module 408 to generate at least a portionof pixel array data 409 with updated menu pixel data that may presentshading indicia at the portion of screen 600 e identifying input option618 in menu 610 of display 212. Similarly, as shown by screen 600 e ofFIG. 4E, in response to a user selecting a car image at style inputoption 620, graphical display system 401 may generate and present“<car>” within the box identifying input option 620 in menu 610 ofdisplay 212. Moreover, as shown by screen 600 e of FIG. 4E, in responseto a user selecting a particular black and white color scheme with inputoption 622 and no effects with input option 624, graphical displaysystem 401 may generate and present a representation of that colorscheme (e.g., “B&W”) within the box identifying input option 622 in menu610 of display 212 and a representation of no effect (e.g., “none”)within the box identifying input option 624 in menu 610 of display 212.

Once options 618, 620, 622, and 624 of menu 610 have been selected forcreating an image graphical object (e.g., a black and white image of acar with no effects), and once the selections have been received bygraphical display system 401 and represented on display 212 in menu 610,the user may then interact with device 200 for generating at least onecar image on canvas 601 according to the selected options. Based on anyappropriate image graphical object input information 403, which may begenerated by a user (e.g., using input component 210 and/or inputcomponent 210 a) and/or any application running on device 200 (e.g.,application 203), graphical command generating module 404 may beconfigured to define and generate at least one new image graphicalobject input command 405. This new image graphical object input command405 may then be processed by graphical command processing module 408 asnew image graphical object pixel array data 409 and presented on display212.

For example, as also shown by screen 600 e of FIG. 4E, a user mayinteract with graphical display system 401 to generate a new imagegraphical object 660 in artwork 11 on canvas 601. As shown, imagegraphical object 660 may include a black and white image of a carcentered about a point P9 on canvas 601 and with an upper-left corner ata point P10 on canvas 601, with the selected image properties of options620, 622, and 624. For example, in response to a user defining point P9on canvas 601 for positioning the center of a new image graphical object(e.g., by touching point P9 on canvas 601 with touch screen inputcomponent 210), and additional point P10 for positioning the upper-leftcorner of the new image graphical object, graphical command generatingmodule 404 may receive certain image input information 403 and thengenerate a particular image input command 405. For example, based on theselected properties of options 620, 622, and 624, and points P9 and P10,graphical command generating module 404 may generate a new imagegraphical object input command 405, which may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=IMAGE; STYLE=<CAR.FILE>; COLOR=B&W; EFFECT=NONE; CENTER:P9;CORNER:P10”. The new image input command 405 generated by graphicalcommand generating module 404 may then be processed by graphical commandprocessing module 408 to generate at least a portion of new image pixelarray data 409 that may present new image graphical object 660 at theappropriate position on canvas 601 of screen 600 e of display 212. It isto be understood that the above representative syntax of new image inputcommand 405 for generating new image graphical object 660 is merelyrepresentative, and that any suitable syntax may be used by application203 of second electronic device 200 for generating a new image inputcommand 405 in response to received shape input information 403.

In some embodiments, rather than generating a single new image inputcommand 405 for a new image graphical object to be generated on canvas601, graphical command generating module 404 may generate multiple newimage input commands 405, each of which may adequately instructgraphical command processing module 408 to generate a particular portionor configuration of new image graphical object 650 on canvas 601. Forexample, as shown in FIG. 4E, when a user has only defined a point P9 oncanvas 601 for positioning the center of a new image graphical object,but has not yet defined point P10, a default position for theupper-right corner of the image may be defined by a default point P10′(e.g., based on a default size and/or a default orientation of theimage), such that graphical command generating module 404 may generatetwo image graphical object input commands 405. The first of such twoimage graphical object input commands 405 for defining image graphicalobject 660 may be generated only after the user has defined point P9 andmay have the following representative syntax: “COMMAND: CLASS=GRAPHICALOBJECT INPUT; TYPE=IMAGE; STYLE=<CAR.FILE>; COLOR=B&W; EFFECT=NONE;CENTER:P9; CORNER:P10′”, while the second of such two image graphicalobject input commands 405 for defining image graphical object 660 may begenerated after the user has defined points P9 and P10 and may have thefollowing representative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=IMAGE; STYLE=<CAR.FILE>; COLOR=B&W; EFFECT=NONE; CENTER:P9;CORNER:P10”. Each one of these two image input commands 405 generated bygraphical command generating module 404 may be processed by graphicalcommand processing module 408 to generate at least a portion of newimage pixel array data 409 that may present new image graphical object660 at the appropriate position on canvas 601 of screen 600 e of display212.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, continuing with theexample of FIG. 4E, based on the selected properties of options 620,622, and 624, and points P9 and P10 defined by image graphical objectinput information 603 and received by second electronic device 200,graphical command generating module 404 may generate at least one newimage graphical object input command 405 that not only may be receivedand processed by graphical command processing module 408 of secondelectronic device 200 to generate at least a portion of new image pixelarray data 409 for presenting new image graphical object 660 at theappropriate position on canvas 601 of screen 600 e of display 212, butthat also may be received and processed (i.e., as a received graphicalobject input command 305 r) by graphical command processing module 308of first electronic device 100 to generate at least a portion of newimage pixel array data 309 that may present a new image graphical object560 at the appropriate position on canvas 501 of screen 500 e of display112. By sharing at least one new image graphical object input command405 (e.g., as shared image graphical object input command 405 s and,eventually, as received image graphical object input command 305 r),both graphical command processing module 408 of second device 200 andgraphical command processing module 308 of first device 100 mayindependently receive and process the same new image graphical objectinput command for generating a new image graphical object of artwork 11on both canvas 501 of first device 100 and canvas 601 of second device200.

Alternatively, at least some new image graphical object pixel array data409 generated by graphical command processing module 408 may be providedto communications circuitry 206 of second electronic device 200 asshared image graphical object pixel array data 409 s. Communicationscircuitry 206 may then provide the shared image graphical object pixelarray data 409 s to communications circuitry 106 of first electronicdevice 100 via communications media 55, and communications circuitry 106may provide the shared image graphical object pixel array data 409 s asreceived image graphical object pixel array data 309 r to graphicalcommand processing module 308 of graphical display system 301.Therefore, graphical command processing module 408 may process a newimage graphical object input command 405 to generate at least a portionof new image pixel array data 409 that not only may present new imagegraphical object 660 at the appropriate position on canvas 601 of screen600 e of display 212, but that also may be received (i.e., as receivedimage pixel array data 309 r) by graphical command processing module 308of first electronic device 100 to present new image graphical object 560at the appropriate position on canvas 501 of screen 500 e of display112.

As mentioned, in some embodiments, based on the selected properties ofoptions 620, 622, and 624, and points P9 and P10, graphical commandgenerating module 404 may generate a new image graphical object inputcommand 405, which may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=IMAGE; STYLE=<CAR.FILE>;COLOR=B&W; EFFECT=NONE; CENTER:P9; CORNER:P10”. The style portion ofsuch a new image graphical object input command 405 (i.e., the“STYLE=<CAR.FILE>” portion) may be a pointer, URL, or any other suitableaddress at which the appropriate image file may be accessed. Theappropriate image file may be stored in any suitable location that maybe accessible to first device 100 and/or second device 200 (e.g., memory104, memory 204, and/or server 70), and the appropriate image file maybe stored in any suitable format (e.g., JPEG, TIFF, PNG, GIF, etc.).When such a new image graphical object input command 405 is received bya graphical command processing module, the graphical command processingmodule may access the addressed image file and process the file as newimage pixel array data. In other embodiments, the style portion of sucha new image graphical object input command 405 (i.e., the“STYLE=<CAR.FILE>” portion) may be a copy of at least a portion of theappropriate image file. For example, in some embodiments, the styleportion of a new image graphical object input command 405 may include atleast a portion of an actual image file in any suitable format (e.g., aJPEG file, a TIFF file, a PNG file, a GIF file, etc.) that may be in anycompressed or uncompressed state. When such a new image graphical objectinput command 405 is received by a graphical command processing module,the graphical command processing module may process the received imagefile as new image pixel array data.

As mentioned, inter-device submenu 527 of artist menu 510 may include aninput synch option 526, and inter-device submenu 627 of artist menu 610may include an input synch option 626, each of which a user may interactwith to selectively synchronize the current active user interfaceselections of first electronic device 100 with the current active userinterface selections of second electronic device 200. As shown in FIGS.4A-4E, input synch options 526 and 626 are unselected. When input synchoptions 526 and 626 are unselected, system 1 may be configured such thatthe current active user interface selections of first electronic device100 are not synchronized with the current active user interfaceselections of second electronic device 200. Such non-synchronization mayallow for the current active graphical object type selection(s) ofsubmenu 513 and/or the current active graphical object propertyselection(s) of submenu 523 of first device 100 to differ from thecurrent active graphical object type selection(s) of submenu 613 and/orthe current active graphical object property selection(s) of submenu 623of second device 200. Such non-synchronization may also allow for firstdevice 100 to be interacted with for generating a first type ofgraphical object while second device 200 may be simultaneouslyinteracted with for generating a second type of graphical object.

For example, with continued reference to FIG. 4E, although a user ofsecond device 200 may select image input option 618 of submenu 613 ofartist menu 610 for creating image graphical object 660 on canvas 601(e.g., selection of option 618 may be shown by shading indicia withinoption 618 on FIG. 4E), text string input option 514 of submenu 513 ofartist menu 510 may still be selected (e.g., due to a user of firstdevice 100 originally creating text string graphical object 540 in FIG.4C). Therefore, in some embodiments, while one user may interact withsecond device 200 for creating new image graphical object 660 on canvas601 and/or new image graphical object 560 on canvas 501, the same useror another user may simultaneously interact with first device 100 forcreating another new graphical object on canvas 501 and/or on canvas601.

For example, as also shown by screen 500 e of FIG. 4E, while one usermay interact with second device 200 for creating image graphical object660 on canvas 601 and/or image graphical object 560 on canvas 501, thesame or another user may simultaneously interact with first electronicdevice 100 for creating a new text string graphical object. The new textstring graphical object to be created may be at least partially definedby the same selections for submenu options 520, 522, and 524 as madewith respect to FIG. 4C or by new properties as selected by the user.Once options 514, 520, 522, and 524 of menu 510 have been selected forcreating a new text string graphical object (e.g., with an Arial font ofa particular color and an underlining effect), the user may theninteract with device 100 for generating one or more glyphs of text oncanvas 501 according to the selected options. Based on any appropriatetext string graphical object input information 303, which may begenerated by a user (e.g., using input component 110 and/or inputcomponent 110 a) and/or any application running on device 100 (e.g.,application 103), graphical command generating module 304 may beconfigured to define and generate at least one new text string graphicalobject input command 305. This new text string graphical object inputcommand 305 may then be processed by graphical command processing module308 as new text string graphical object pixel array data 309 andpresented on display 112.

For example, as also shown by screen 500 e of FIG. 4E, a user mayinteract with graphical display system 301 to generate a new text stringgraphical object 570 in artwork 11 on canvas 501. As shown, text stringgraphical object 570 may include the text “A” beginning at a startingpoint P11 on canvas 501 with the selected text string properties ofoptions 520, 522, and 524. For example, in response to a user defining astarting point P11 of a new text string graphical object (e.g., bypointing a cursor at point P11 on canvas 501 with mouse input component110) and defining the character “A” of the new text string graphicalobject (e.g., by selecting the appropriate key(s) on keyboard inputcomponent 110 a), graphical command generating module 304 may receivecertain text string input information 303 and then generate a particulartext string input command 305. For example, based on the selectedproperties of options 520, 522, and 524, starting point P11, andcharacter “A”, graphical command generating module 304 may generate anew text string graphical object input command 305, which may have thefollowing representative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=TEXT STRING; STYLE=ARIAL; COLOR=BLACK; EFFECT=UNDERLINE; START:P11;CHARACTER(S):A”. The new text string input command 305 generated bygraphical command generating module 304 may then be processed bygraphical command processing module 308 to generate at least a portionof new text string pixel array data 309 that may present new text stringgraphical object 570 at the appropriate position on canvas 501 of screen500 e of display 112.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, continuing with theexample of FIG. 4E, based on the selected properties of options 520,522, and 524, point P11, and character “A” defined by text stringgraphical object input information 303 and received by first electronicdevice 100, graphical command generating module 304 may generate a newtext string graphical object input command 305 that not only may bereceived and processed by graphical command processing module 308 offirst electronic device 100 to generate at least a portion of newdrawing stroke pixel array data 309 for presenting new text stringgraphical object 570 at the appropriate position on canvas 501 of screen500 e of display 112, but that also may be received and processed (i.e.,as a received graphical object input command 405 r) by graphical commandprocessing module 408 of second electronic device 200 to generate atleast a portion of new text string pixel array data 409 that may presenta new text string graphical object 670 at the appropriate position oncanvas 601 of screen 600 e of display 212. By sharing the new textstring graphical object input command 305 (e.g., as shared text stringgraphical object input command 305 s and, eventually, as received textstring graphical object input command 405 r), both graphical commandprocessing module 308 of first device 100 and graphical commandprocessing module 408 of second device 200 may independently receive andprocess the same new text string graphical object input command forgenerating a new text string graphical object of artwork 11 on bothcanvas 501 of first device 100 and canvas 601 of second device 200.

Alternatively, as mentioned, at least some new text string graphicalobject pixel array data 309 generated by graphical command processingmodule 308 may be provided to communications circuitry 106 of firstelectronic device 100 as shared text string graphical object pixel arraydata 309 s. Communications circuitry 106 may then provide the sharedtext string graphical object pixel array data 309 s to communicationscircuitry 206 of second electronic device 200 via communications media55, and communications circuitry 206 may provide the shared text stringgraphical object pixel array data 309 s as received text stringgraphical object pixel array data 409 r to graphical command processingmodule 408 of graphical display system 401. Therefore, graphical commandprocessing module 308 may process a new text string graphical objectinput command 305 to generate at least a portion of new text stringpixel array data 309 that not only may present new text string graphicalobject 570 at the appropriate position on canvas 501 of screen 500 e ofdisplay 112, but that also may be received (i.e., as received textstring pixel array data 409 r) by graphical command processing module408 of second electronic device 200 to present new text string graphicalobject 670 at the appropriate position on canvas 601 of screen 600 e ofdisplay 212.

Due to input synch options 526 and 626 being unselected, system 1 may beconfigured such that first electronic device 100 may define, process,display, and/or share new text string graphical object input command 305and/or new text string graphical object pixel array data 309 for newtext string graphical object 570 with second electronic device 200before, during, and/or at the same time as second electronic device 200may define, process, display, and/or share new image graphical objectinput command 405 and/or new image graphical object pixel array data 409for new image graphical object 660 with first electronic device 100.Alternatively, if input synch options 526 and 626 are selected (notshown), system 1 may be configured such that whenever a user interactswith either first device 100 to make a selection on artist menu 510 orsecond device 200 to make a selection on artist menu 610, the selectionmay be made to both artist menu 510 and artist menu 610.

In some embodiments, different portions of a collaborative work of artmay be shown on different devices at a particular time. For example,although FIGS. 4A-4E may show the entirety of collaborative work of art11 on both canvas 501 of first electronic device 100 and canvas 601 ofsecond electronic device 200, a user may choose to view the entirety ofcollaborative artwork 11 on display 112 of first device 100 and only aportion of collaborative artwork 11 on display 212 of second device 200(e.g., to view a portion of the artwork in greater detail by zooming-into that portion using second device 200). However, before describingsuch additional features of system 1 with respect to screens 500 a-500 kand 600 a-600 k of FIGS. 4A-4K, a more detailed description of portionsof graphical display system 301 and graphical display system 401 isprovided.

In some embodiments, as shown in FIG. 3A, for example, graphical commandgenerating module 304 of graphical display system 301 may include agraphical input command generating module 310, an active displayadjusting module 320, and an outline selecting module 330. Moreover, asshown in FIG. 3A, graphical command processing module 308 of graphicaldisplay system 301 may include an outline moving module 340, a graphicalcommand sharing module 350, a pixel array requesting module 360, a pixelarray sharing module 370, a pixel array generating module 380, a pixelarray combining module 388, and an active display defining module 390.

As described in more detail with respect to FIGS. 4E-4K, graphical inputcommand generating module 310 may be configured to receive graphicalinput information 311 and to generate one or more generated graphicalinput commands 319, which may then be provided to graphical commandsharing module 350 and/or to pixel array generating module 380. Activedisplay adjusting module 320 may be configured to receive active displayadjustment input information 321 and to generate one or more activedisplay adjustment input commands 329, which may then be provided toactive display defining module 390 and/or to communications circuitry106 of first device 100 for sharing with a remote entity. Outlineselecting module 330 may be configured to receive outline selectinginput information 331 and to generate one or more shared other deviceactive display adjustment input commands 339, which may then be providedto communications circuitry 106 of first device 100 for sharing with aremote entity. Moreover, outline selecting module 330 may be configuredto generate one or more generated outline moving commands 335, which maythen be provided to outline moving module 340. Graphical inputinformation 311, active display adjustment input information 321, and/oroutline selecting input information 331 may be a portion of inputinformation 303 and may be received from various input sources, such asthe one or more applications being run by first electronic device 100(e.g., application 103) and/or any user input instructions beingreceived by device 100 (e.g., via any input component 110 of firstelectronic device 100). When provided to communications circuitry 106 offirst device 100 for sharing with a remote entity, active displayadjustment input commands 329 and/or shared other device active displayadjustment input commands 339 may be a shared input command 305 s.

Outline moving module 340 may be configured to receive one or moregenerated outline moving commands 335 from outline selecting module 330and/or one or more received outline moving commands 341 fromcommunications circuitry 106 of first device 100. Received outlinemoving commands 341 may be received by communications circuitry 106 fromany suitable remote entity (e.g., second device 200) and a receivedoutline moving command 341 may be a received input command 305 r.Moreover, outline moving module 340 may be configured to generate one ormore master outline moving commands 349, which may then be provided topixel array generating module 380.

Graphical command sharing module 350 may be configured to receive one ormore generated graphical input commands 319 from graphical input commandgenerating module 310 and to generate one or more shared graphical inputcommands 359, which may then be provided to communications circuitry 106of first device 100 for sharing with a remote entity. When provided tocommunications circuitry 106 of first device 100 for sharing with aremote entity, a graphical input command 359 may be a shared inputcommand 305 s.

Pixel array requesting module 360 may be configured to receive one ormore received graphical input commands 361 from communications circuitry106 of first device 100 and/or active display adjustment pixel arraydata request information 395 from active display defining module 390.Received graphical input commands 361 may be received by communicationscircuitry 106 from any suitable remote entity (e.g., second device 200)and a received graphical input command 361 may be a received inputcommand 305 r. Moreover, pixel array requesting module 360 may beconfigured to provide one or more received graphical input commands 361to pixel array generating module 380. Additionally or alternatively,pixel array requesting module 360 may be configured to generate one ormore shared pixel array data request commands 369, which may then beprovided to communications circuitry 106 of first device 100 for sharingwith a remote entity. When provided to communications circuitry 106 offirst device 100 for sharing with a remote entity, a shared pixel arraydata request command 369 may be a shared input command 305 s.

Pixel array sharing module 370 may be configured to receive one or morereceived pixel array data request commands 371 from communicationscircuitry 106 of first device 100. Received pixel array data requestcommands 371 may be received by communications circuitry 106 from anysuitable remote entity (e.g., second device 200) and a received pixelarray data request command 371 may be a received input command 305 r.Moreover, pixel array sharing module 370 may be configured to receivecombined pixel array data 389 from pixel array combining module 388.Pixel array sharing module 370 may also be configured to generate sharedpixel array data 379, which may then be provided to communicationscircuitry 106 of first device 100 for sharing with a remote entity. Whenprovided to communications circuitry 106 of first device 100 for sharingwith a remote entity, shared pixel array data 379 may be shared pixelarray data 309 s.

Pixel array generating module 380 may be configured to receive one ormore generated graphical input commands 319 from graphical input commandgenerating module 310, one or more master outline moving commands 349from outline moving module 340, and/or one or more received graphicalinput commands 361 from pixel array requesting module 360. Moreover,pixel array generating module 380 may be configured to generategenerated pixel array data 385, which may then be provided to pixelarray combining module 388.

Pixel array combining module 388 may be configured to receive generatedpixel array data 385 from pixel array generating module 380 and/orreceived pixel array data 387 from communications circuitry 106 of firstdevice 100. Received pixel array data 387 may be received bycommunications circuitry 106 from any suitable remote entity (e.g.,second device 200) and pixel array data 387 may be received pixel arraydata 309 r. Moreover, pixel array combining module 388 may be configuredto generate combined pixel array data 389, which may then be provided topixel array sharing module 370 and/or to active display defining module390.

As also shown in FIG. 3A, active display defining module 390 may beconfigured to receive one or more active display adjustment inputcommands 329 from active display adjusting module 320, combined pixelarray data 389 from pixel array combining module 380, and/or one or morereceived active display adjustment input commands 391 fromcommunications circuitry 106 of first device 100. Received activedisplay adjustment input commands 391 may be received by communicationscircuitry 106 from any suitable remote entity (e.g., second device 200)and a received active display adjustment input command 391 may be areceived input command 305 r. Active display defining module 390 mayalso be configured to generate active pixel array data 399, which maythen be presented on display 112 of first device 100. Active pixel arraydata 399 may be pixel array data 309. Alternatively or additionally,active display defining module 390 may be configured to generate activedisplay adjustment pixel array data request information 395, which maythen be provided to pixel array requesting module 360.

In some embodiments, as shown in FIG. 3B, for example, graphical commandgenerating module 404 of graphical display system 401 may include agraphical input command generating module 410, an active displayadjusting module 420, and an outline selecting module 430. Moreover, asshown in FIG. 3B, graphical command processing module 408 of graphicaldisplay system 401 may include an outline moving module 440, a graphicalcommand sharing module 450, a pixel array requesting module 460, a pixelarray sharing module 470, a pixel array generating module 480, a pixelarray combining module 488, and an active display defining module 490.

As described in more detail with respect to FIGS. 4E-4K, graphical inputcommand generating module 410 may be configured to receive graphicalinput information 411 and to generate one or more generated graphicalinput commands 419, which may then be provided to graphical commandsharing module 450 and/or to pixel array generating module 480. Activedisplay adjusting module 420 may be configured to receive active displayadjustment input information 421 and to generate one or more activedisplay adjustment input commands 429, which may then be provided toactive display defining module 490 and/or to communications circuitry206 of second device 200 for sharing with a remote entity. Outlineselecting module 430 may be configured to receive outline selectinginput information 431 and to generate one or more shared other deviceactive display adjustment input commands 439, which may then be providedto communications circuitry 206 of second device 200 for sharing with aremote entity. Moreover, outline selecting module 430 may be configuredto generate one or more generated outline moving commands 435, which maythen be provided to outline moving module 440. Graphical inputinformation 411, active display adjustment input information 421, and/oroutline selecting input information 431 may be a portion of inputinformation 403 and may be received from various input sources, such asthe one or more applications being run by second electronic device 200(e.g., application 203) and/or any user input instructions beingreceived by device 200 (e.g., via any input component 210 of secondelectronic device 200). When provided to communications circuitry 206 ofsecond device 200 for sharing with a remote entity, active displayadjustment input commands 429 and/or shared other device active displayadjustment input commands 439 may be a shared input command 405 s.

Outline moving module 440 may be configured to receive one or moregenerated outline moving commands 435 from outline selecting module 430and/or one or more received outline moving commands 441 fromcommunications circuitry 206 of second device 200. Received outlinemoving commands 441 may be received by communications circuitry 206 fromany suitable remote entity (e.g., first device 100) and a receivedoutline moving command 441 may be a received input command 405 r.Moreover, outline moving module 440 may be configured to generate one ormore master outline moving commands 449, which may then be provided topixel array generating module 480.

Graphical command sharing module 450 may be configured to receive one ormore generated graphical input commands 419 from graphical input commandgenerating module 410 and to generate one or more shared graphical inputcommands 459, which may then be provided to communications circuitry 206of second device 200 for sharing with a remote entity. When provided tocommunications circuitry 206 of second device 200 for sharing with aremote entity, a graphical input command 459 may be a shared inputcommand 405 s.

Pixel array requesting module 460 may be configured to receive one ormore received graphical input commands 461 from communications circuitry206 of second device 200 and/or active display adjustment pixel arraydata request information 495 from active display defining module 490.Received graphical input commands 461 may be received by communicationscircuitry 206 from any suitable remote entity (e.g., first device 100)and a received graphical input command 461 may be a received inputcommand 405 r. Moreover, pixel array requesting module 460 may beconfigured to provide one or more received graphical input commands 461to pixel array generating module 480. Additionally or alternatively,pixel array requesting module 460 may be configured to generate one ormore shared pixel array data request commands 469, which may then beprovided to communications circuitry 206 of second device 200 forsharing with a remote entity. When provided to communications circuitry206 of second device 200 for sharing with a remote entity, a sharedpixel array data request command 469 may be a shared input command 405s.

Pixel array sharing module 470 may be configured to receive one or morereceived pixel array data request commands 471 from communicationscircuitry 206 of second device 200. Received pixel array data requestcommands 471 may be received by communications circuitry 206 from anysuitable remote entity (e.g., first device 100) and a received pixelarray data request command 471 may be a received input command 405 r.Moreover, pixel array sharing module 470 may be configured to receivecombined pixel array data 489 from pixel array combining module 488.Pixel array sharing module 470 may also be configured to generate sharedpixel array data 479, which may then be provided to communicationscircuitry 206 of second device 200 for sharing with a remote entity.When provided to communications circuitry 206 of second device 200 forsharing with a remote entity, shared pixel array data 479 may be sharedpixel array data 409 s.

Pixel array generating module 480 may be configured to receive one ormore generated graphical input commands 419 from graphical input commandgenerating module 410, one or more master outline moving commands 449from outline moving module 440, and/or one or more received graphicalinput commands 461 from pixel array requesting module 460. Moreover,pixel array generating module 480 may be configured to generategenerated pixel array data 485, which may then be provided to pixelarray combining module 488.

Pixel array combining module 488 may be configured to receive generatedpixel array data 485 from pixel array generating module 480 and/orreceived pixel array data 487 from communications circuitry 206 ofsecond device 200. Received pixel array data 487 may be received bycommunications circuitry 206 from any suitable remote entity (e.g.,first device 100) and pixel array data 487 may be received pixel arraydata 409 r. Moreover, pixel array combining module 488 may be configuredto generate combined pixel array data 489, which may then be provided topixel array sharing module 470 and/or to active display defining module490.

As also shown in FIG. 3B, active display defining module 490 may beconfigured to receive one or more active display adjustment inputcommands 429 from active display adjusting module 420, combined pixelarray data 489 from pixel array combining module 480, and/or one or morereceived active display adjustment input commands 491 fromcommunications circuitry 206 of second device 200. Received activedisplay adjustment input commands 491 may be received by communicationscircuitry 206 from any suitable remote entity (e.g., first device 100)and a received active display adjustment input command 491 may be areceived input command 405 r. Active display defining module 490 mayalso be configured to generate active pixel array data 499, which maythen be presented on display 212 of second device 200. Active pixelarray data 499 may be pixel array data 409. Alternatively oradditionally, active display defining module 490 may be configured togenerate active display adjustment pixel array data request information495, which may then be provided to pixel array requesting module 460.

Each one of graphical input command generating module 410, activedisplay adjusting module 420, outline selecting module 430, outlinemoving module 440, graphical command sharing module 450, pixel arrayrequesting module 460, pixel array sharing module 470, pixel arraygenerating module 480, pixel array combining module 488, and activedisplay defining module 490 of graphical display system 401 of secondelectronic device 200, and any of the information, commands, and pixelarray data generated or received by any of those modules of system 401,may be the same as or substantially similar to a respective one ofgraphical input command generating module 310, active display adjustingmodule 320, outline selecting module 330, outline moving module 340,graphical command sharing module 350, pixel array requesting module 360,pixel array sharing module 370, pixel array generating module 380, pixelarray combining module 388, and active display defining module 390 ofgraphical display system 301 of first electronic device 100, and any ofthe information, commands, and pixel array data generated or received byany of those modules of system 301, and, therefore, may not beindependently described in greater detail.

While, in some embodiments, graphical display system 301 of firstelectronic device 100 and graphical display system 401 of secondelectronic device 200 may be the same or substantially similar graphicaldisplay systems, in other embodiments, graphical display system 301 offirst electronic device 100 may have one or more different and/oradditional modules that graphical display system 401 of secondelectronic device 200 may not have, and vice versa. While, in someembodiments, graphical display system 301 of first electronic device 100and graphical display system 401 of second electronic device 200 may bethe same or substantially similar graphical display systems, in otherembodiments, graphical display system 301 of first electronic device 100may be configured to process or otherwise handle one or more differentand/or additional types of input commands and/or types of pixel arraydata that graphical display system 401 of second electronic device 200may not be configured to process or otherwise handle, and vice versa.

As also shown in FIGS. 3A and 3B, a shared other device active displayadjustment input command 339 generated by graphical display system 301may be received by graphical display system 401 as a received own activedisplay adjustment input command 491, while a shared other device activedisplay adjustment input command 439 generated by graphical displaysystem 401 may be received by graphical display system 301 as a receivedown active display adjustment input command 391. An active displayadjustment input command 329 generated by graphical display system 301may be received by graphical display system 401 as a received outlinemoving command 441, while an active display adjustment input command 429generated by graphical display system 401 may be received by graphicaldisplay system 301 as a received outline moving command 341. A sharedgraphical input command 359 generated by graphical display system 301may be received by graphical display system 401 as a received graphicalinput command 461, while a shared graphical input command 459 generatedby graphical display system 401 may be received by graphical displaysystem 301 as a received graphical input command 361. Moreover, a sharedpixel array data request command 369 generated by graphical displaysystem 301 may be received by graphical display system 401 as a receivedpixel array data request command 471, while a shared pixel array datarequest command 469 generated by graphical display system 401 may bereceived by graphical display system 301 as a received pixel array datarequest command 371. Finally, as shown in FIGS. 3A and 3B, shared pixelarray data 379 generated by graphical display system 301 may be receivedby graphical display system 401 as received pixel array data 487, whileshared pixel array data 479 generated by graphical display system 401may be received by graphical display system 301 as received pixel arraydata 387.

As mentioned, although FIGS. 4A-4E show the entirety of collaborativeartwork 11 on both canvas 501 of first electronic device 100 and canvas601 of second electronic device 200, a user may choose to view theentirety of collaborative artwork 11 on display 112 of first device 100and only a portion of collaborative artwork 11 on display 212 of seconddevice 200 (e.g., to view a portion of the work in greater detail byzooming-in to that portion using second device 200). For example, asshown in FIGS. 4E and 4F, a user may interact with second device 200 togenerate input information for changing the portion of canvas 601 thatmay be displayed on display 212. As shown by screen 600 e of FIG. 4E,for example, a user of second electronic device 200 may select a pointP12 on canvas 601 that the user would like to zoom-in on. A user mayinteract with second electronic device 200 in any suitable way (e.g.,using input component 210 and/or input component 210 a) to identifypoint P12 or to instruct device 200 to zoom-in on a particular portionof canvas 601 in any suitable way. For example, a user may use amulti-touch pull user input gesture to zoom-in on canvas 601 about pointP12 with a particular zoom factor Z. Additionally or alternatively, auser may trace an outline on canvas 601 to define the portion of canvas601 that the user would like to be displayed across the entirety of thecanvas portion of screen 212 (e.g., by tracing outline O as shown inFIG. 4E). Although not shown, artist menu 610 may provide a user ofsecond electronic device 200 with input options for appropriatelyinteracting with device 200 to properly identify the portion of canvas601 to be actively displayed on display 212.

Any selections or interactions made by the user of second device 200with respect to identifying the portion of canvas 601 to be activelydisplayed on display 212 may be received by graphical display system 401of second electronic device 200 for updating the visible portion ofcanvas 601 on display 212. For example, when a user identifies zoompoint P12 and an appropriate zoom factor Z on canvas 601 of screen 600 eof FIG. 4E, such user interactions may be received by active displayadjusting module 420 of graphical command generating module 404 ofgraphical display system 401 as active display adjustment inputinformation 421, and active display adjusting module 420 may generateone or more active display adjustment input commands 429 representativeof these user interactions. These active display adjustment inputcommands 429 may be processed by active display defining module 490 ofgraphical command processing module 408 to adjust the portion of pixelarray data of canvas 601 (e.g., combined pixel array data 489) that maybe actively displayed (e.g., as active pixel array data 499) on display212.

For example, as shown by screen 600 f of FIG. 4F, in response to a userinteracting with second device 200 to identify the portion of canvas 601to be actively displayed on display 212 (e.g., zoom point P12 and zoomfactor Z with touch screen I/O component 211), active display adjustingmodule 420 may receive certain active display adjustment inputinformation 421 and may then generate a particular active displayadjustment input command 429 (e.g., an active display adjustment inputcommand with the representative syntax “COMMAND: CLASS=ACTIVE DISPLAYADJUSTMENT INPUT; ADJUST=ZOOM; POINT=P12; FACTOR=Z”). Such an activedisplay adjustment input command 429 may then be processed by activedisplay defining module 490 to adjust the portion of combined pixelarray data 489 of canvas 601 that may be actively displayed as activepixel array data 499 on display 212, as shown by screen 600 f of FIG.4F. For example, as shown in FIG. 4F, a zoomed-in canvas portion 601 zof canvas 601 (e.g., about point P12) may be actively displayed byscreen 600 f of display 212.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, continuing with theexample of FIG. 4F, based on the active display adjustment inputinformation 421 received by active display adjusting module 420 ofsecond electronic device 200, active display adjusting module 420 maygenerate an active display adjustment input command 429 that not onlymay be received and processed by active display defining module 490 toadjust the portion of combined pixel array data 489 of canvas 601 thatmay be actively displayed as active pixel array data 499 on display 212as canvas portion 601 z of screen 600 f of display 212, but that alsomay be received and processed (i.e., as received outline moving command341) by graphical display system 301 of first electronic device 100 togenerate at least a portion of new pixel array data that may present asecond device outline 602 at the appropriate position on canvas 501 ofscreen 500 f of display 112. Second device outline 602 may be configuredto identify on canvas 501 of screen 500 f the portion of collaborativeartwork 11 on canvas 501 that is currently actively displayed by canvasportion 601 z on screen 600 f of display 212 (i.e., the zoomed-inportion about point P12 of synched canvases 501 and 601).

For example, active display adjustment input command 429 may be receivedas received outline moving command 341 by outline moving module 340 ofgraphical command processing module 308 of first electronic device 100.Outline moving module 340 may be configured to process received outlinemoving command 341 and generate a master outline moving command 349,which may then be provided to pixel array generating module 380. In someembodiments, master outline moving command 349 may be the same asreceived outline moving command 341 (e.g., when outline moving module340 has not also received a generated outline moving command 335 thathas priority over received outline moving command 341). When receivedoutline moving command 341 is passed on to pixel array generating module380 (e.g., as a master outline moving command 349), pixel arraygenerating module 380 may process that command in order to generateappropriate generated pixel array data 385 for defining second deviceoutline 602 at the appropriate position on canvas 501. Such generatedpixel array data 385 may be received by pixel array combining module388, which may combine generated pixel array data 385 with any receivedpixel array data 387 in order to generate combined pixel array data 389.Such combined pixel array data 389, which may include the generatedpixel array data 385 for defining second device outline 602 at theappropriate position on canvas 501, may then be processed by activedisplay defining module 390 for generating active pixel array data 399for presentation on display 112.

In some embodiments, system 1 may be configured such that when thedisplayed portion of a synched canvas on one device is adjusted to bedifferent than the displayed portion of the synched canvas on anotherdevice, an outline of the adjusted displayed portion may beautomatically provided on the non-adjusted canvas (e.g., outline 602 oncanvas 501). However in other embodiments, no such outline may beprovided. System 1 may be configured such that a user may selectivelydetermine whether or not such an outline is to be presented.

Due to input synch options 526 and 626 being unselected, system 1 may beconfigured such that first electronic device 100 may not adjust theactively displayed portion of canvas 501 on screen 500 f when electronicdevice 200 adjusts the actively displayed portion of canvas 601 onscreen 600 f. Alternatively, if input synch options 526 and 626 areselected (not shown), system 1 may be configured such that whenever auser interacts with either first device 100 to adjust the portion ofcanvas 501 displayed on display 112 or second device 200 to adjust theportion of canvas 601 displayed on display 212, the adjustment may bemade to both canvas 501 and canvas 601.

As mentioned, inter-device submenu 527 of artist menu 510 may include anoutline lock option 528, and inter-device submenu 627 of artist menu 610may include an outline lock option 628, each of which a user mayinteract with to selectively fix an outline of the device's canvas onanother device's canvas (e.g., to fix second device outline 602 oncanvas 501 of first device 100). As shown in FIGS. 4F-4K, outline lockoptions 528 and 628 are unselected. When outline lock options 528 and628 are unselected, system 1 may be configured such that the activelydisplayed portion of canvas 601 represented by second device outline 602on canvas 501 is not prevented from being adjusted by interaction withfirst device 100. That is, when outline lock options 528 and 628 areunselected, system 1 may be configured such that a user may interactwith outline 602 displayed on canvas 501 of first device 100 to adjustthe actively displayed portion of canvas 601 displayed on display 212 ofsecond device 200.

For example, with continued reference to FIG. 4F, although a user ofsecond device 200 may have interacted with second device 200 to identifythe portion of canvas 601 to be actively displayed on display 212 (e.g.,zoomed-in canvas portion 601 z), a user may then interact with outline602 on canvas 501 of first device 100 in order to alter the portion ofcanvas 601 to be actively displayed on display 212. As shown by screen500 f of FIG. 4F, for example, a user of first electronic device 100 mayselect a point P13 on canvas 501 that may include a displayed portion ofoutline 602 that the user would like to move to another point on canvas501 (e.g., to point P14, in the direction of arrow D). A user mayinteract with first electronic device 100 in any suitable way (e.g.,using input component 110 and/or input component 110 a) to identifypoint P13 of outline 602 and to instruct device 100 to move that pointof outline 602 from point P13 on canvas 501 to point P14 on canvas 501in any suitable way. For example, a user may click on that portion ofoutline 602 and drag it down in the direction of arrow D to point P14(e.g., using mouse input component 110). Although not shown, artist menu510 may provide a user of first electronic device 100 with input optionsfor appropriately interacting with device 100 to easily adjust theportion of canvas 501 covered by outline 602 on display 112.

Any selections or interactions made by the user of first device 100 foridentifying how to adjust outline 602 with respect to canvas 501 may bereceived by graphical display system 301 of first electronic device 100for updating outline 602 on canvas 501. For example, when a useridentifies initial outline point P13 and adjusted outline point P14 oncanvas 501 of screen 500 f of FIG. 4F, such user interactions may bereceived by outline selecting module 330 of graphical command generatingmodule 304 of graphical display system 301 as outline selecting inputinformation 331, and outline selecting module 330 may generate one ormore generated outline moving commands 335 representative of these userinteractions (e.g., one or more generated outline moving input commandswith the representative syntax “COMMAND: CLASS=OUTLINE MOVEMENT INPUT;ADJUST=MOVE; FROMPOINT=P13; TOPOINT=P14”). These generated outlinemoving commands 335 may be processed by outline moving module 340 ofgraphical command processing module 308, which may pass generatedoutline moving commands 335 on to pixel array generating module 380 asmaster outline moving commands 349 (e.g., if outline moving module 340does not receive any received outline moving commands 341 of higherpriority). Pixel array generating module 380 may then generateappropriate pixel array data for an updated outline 602 to be displayedon display 112. For example, as shown by screen 500 g of FIG. 4G, inresponse to a user interacting with first device 100 to identify how toadjust outline 602 with respect to canvas 501 on display 112, such thatappropriate outline selecting input information 331 may be provided tooutline selecting module 330 for generating the appropriate generatedoutline moving command 335, and such that the appropriate master outlinemoving commands 349 may then be provided to pixel array generatingmodule 380 for generating appropriate pixel array data for an updatedoutline 602 to be displayed on display 112, outline 602 may be moved toa new position on canvas 501.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, continuing with theexample of FIG. 4G, based on the outline selecting input information 331received by outline selecting module 330 of first electronic device 100,outline selecting module 330 may also generate one or more shared otherdevice active display adjustment input commands 339 that may be receivedand processed (i.e., as received own active display adjustment inputcommand 491) by graphical display system 401 of second electronic device200 to adjust the portion of canvas 601 that may be actively displayedon screen 600 g of display 212. For example, a shared other deviceactive display adjustment input command 339 may be received as receivedown active display adjustment input command 491 by active displaydefining module 490 of graphical command processing module 408 of secondelectronic device 200. Active display defining module 490 may beconfigured to process received own active display adjustment inputcommand 491 to adjust the portion of combined pixel array data 489 ofcanvas 601 that may be actively displayed as active pixel array data 499on display 212, as shown by screen 600 g of FIG. 4G. For example, asshown in FIG. 4G, an adjusted zoomed-in canvas portion 601 z′ of canvas601 (e.g., with new point P14) may be actively displayed by screen 600 gof display 212. In some embodiments, a shared other device activedisplay adjustment input command 339 may be similar to an associatedgenerated outline moving input command 335 that has also been generatedby outline selecting module 330 for particular input information 331(e.g., a shared other device active display adjustment input command 339may have the representative syntax “COMMAND: CLASS=OTHER DEVICE ACTIVEDISPLAY ADJUSTMENT INPUT; ADJUST=MOVE; FROMPOINT=P13; TOPOINT=P14”).

If however, at screen 500 f of FIG. 4F, outline lock option 528 and/oroutline lock option 628 is selected, system 1 may be configured suchthat any user interaction with device 100 to adjust outline 602 would bedisregarded and would not be processed by outline selecting module 330.For example, if outline lock option 528 and/or outline lock option 628is selected (e.g., by a user interaction with menu 510 and/or menu 610),that selection may generate specific input information 331 that may setan outline lock register 332 in outline selecting module 330 that maythen prevent outline selecting module 330 from generating any command335 and/or command 339 until that register is unset (e.g., until outlinelock option 528 and/or outline lock option 628 is unselected).

Alternatively, rather than moving outline 602 in response to a userinteracting with outline 602 on first device 100, a user may interactwith canvas 601 on second device 200 to similarly move outline 602. Forexample, as shown in screen 400 f of FIG. 4F, a user of second device200 may interact with canvas 601 to pan canvas 601 such that the centerof the actively displayed portion of canvas 601 on second device 200 maybe changed from point P12 to a new center point P12′ (e.g., a user ofdevice 200 may interact with touch screen 211 to drag original centerpoint P12 in the direction of arrow D to new center point P12′). Anyselections or interactions made by the user of second device 200 withrespect to identifying the portion of canvas 601 to be activelydisplayed on display 212 may be received by graphical display system 401of second electronic device 200 for updating the visible portion ofcanvas 601 on display 212.

For example, when a user identifies original center point P12 and a newcenter point P12′ on canvas 601 of screen 600 f of FIG. 4F, such userinteractions may be received by active display adjusting module 420 ofgraphical command generating module 404 of graphical display system 401as active display adjustment input information 421, and active displayadjusting module 420 may then generate one or more active displayadjustment input commands 429 responsive to that active displayadjustment input information 421. For example, as shown by screen 600 gof FIG. 4G, in response to a user interacting with second device 200 toidentify the new portion of canvas 601 to be actively displayed ondisplay 212 (e.g., original center point P12 and a new center point P12′in the direction of arrow D with touch screen I/O component 211), activedisplay adjusting module 420 may receive certain active displayadjustment input information 421 and may then generate a particularactive display adjustment input command 429 (e.g., an active displayadjustment input command with the representative syntax “COMMAND:CLASS=ACTIVE DISPLAY ADJUSTMENT INPUT; ADJUST=PAN; STARTPOINT=P12;ENDPOINT=P12′”). Such an active display adjustment input command 429 maythen be processed by active display defining module 490 to adjust theportion of combined pixel array data 489 of canvas 601 that may beactively displayed as active pixel array data 499 on display 212, asshown by screen 600 g of FIG. 4G. For example, as shown in FIG. 4G, apanned canvas portion 601 z′ of canvas 601 (e.g., about new center pointP12′) may be actively displayed by screen 600 g of display 212.

Moreover, rather than a user interacting with second device 200 todefine a portion of canvas 601 to be actively displayed (e.g., bydefining an outline O or a center point P12 and a zoom factor Z asdescribed with respect to FIG. 4E), a user may instead interact withfirst device 100 to initially define a portion of canvas 601 to beactively displayed by second device 200. A user may interact with firstelectronic device 100 in any suitable way (e.g., using input component110 and/or input component 110 a) to identify a portion of artwork 11 oncanvas 501 to be made the actively displayed portion of canvas 601 onsecond device 200 and, thus, the portion of canvas 501 indicated byoutline 602. For example, as shown in FIG. 4E, a user of first device100 may interact with first device 100 to define an outline O′ on screen500 e of FIG. 4E and to instruct device 100 share a command with device200 to make the portion of artwork 11 within outline O′ on canvas 601the portion of canvas 601 actively displayed by device 200. Such ashared command may be similar to shared other device active displayadjustment input command 339. For example, a user may define outline O′using mouse input component 110. Although not shown, artist menu 510 mayprovide a user of first electronic device 100 with input options forappropriately interacting with device 100 to easily define the portionof artwork 11 to be actively displayed by device 200.

Continuing with the example of FIG. 4G, based on the panning activedisplay adjustment input information 421 received by active displayadjusting module 420 of second electronic device 200, active displayadjusting module 420 may generate an active display adjustment inputcommand 429 that not only may be received and processed by activedisplay defining module 490 to adjust the portion of combined pixelarray data 489 of canvas 601 that may be actively displayed as activepixel array data 499 on display 212 as panned canvas portion 601 z′ ofscreen 600 g of display 212, but that also may be received and processed(i.e., as received outline moving command 341) by graphical displaysystem 301 of first electronic device 100 to generate at least a portionof new pixel array data that may present an adjusted second deviceoutline 602 at the appropriate adjusted position on canvas 501 of screen500 g of display 112. Second device outline 602 may be configured toidentify on canvas 501 of screen 500 g the portion of collaborativeartwork 11 on canvas 501 that is currently actively displayed by canvasportion 601 z′ on screen 600 g of display 212 (i.e., the panned portionabout point P12′ of synched canvases 501 and 601).

In some embodiments, rather than sharing artwork 11 with application 203of second device 200 before creating any graphical content in artwork11, a user may first interact with first device 100 to generate one ormore graphical objects in artwork 11. Then, once certain content hasbeen created in artwork 11 on canvas 501, a user of first device mayshare artwork 11 with application 203 of second device 200 such thatboth devices may proceed with collaborating on artwork 11. In someembodiments, a user of first device 100 may select only a portion ofartwork 11 to be initially displayed by application 203 on display 212.For example, as mentioned, a user may interact with first device 100 todefine outline 602 for indicating which portion of artwork 11 and canvas601 is to be actively displayed by application 203 on display 212. Whenartwork 11 is initially being shared with application 203, a user offirst device 100 may define outline 602 such that only the portion ofartwork 11 within outline 602 may be initially shared with application203 of second device 200. This may reduce the amount of information thatmay have to be communicated to second device 200 for defining theportion of artwork 11 to be initially displayed by device 200. Forexample, when artwork 11 is initially shared with second device 200 onlyafter a user has interacted with first device 100 to define outline 602,application 103 may be configured to only share the portion of artwork11 defined by the portion of canvas 501 within outline 602. This portionof artwork 11 may be shared with application 203 as shared pixel arraydata 309 s containing the graphical content of that portion and/or asone or more shared input commands 305 s defining the graphical contentof that portion.

As shown by screen 500 h of FIG. 4H, for example, a user of firstelectronic device 100 may select drawing stroke input option 512 ofsubmenu 513 of artist menu 510 for creating a new free-form drawingstroke on canvas 501 (e.g., selection of option 512 may be shown byshading indicia within option 512 on FIG. 4H, although selection of anyoption may be made apparent in any other suitable way, includingnon-visual ways). As described above with respect to FIG. 4B, when auser selects drawing stroke input option 512, various options (notshown) may be made available to the user with respect to one or more ofsubmenu options 520, 522, and 524 of graphical object property selectionsubmenu 523, such that a user may select one or more drawing strokeproperties that may at least partially define a drawing stroke graphicalobject to be created on canvas 501. For example, drawing strokegraphical object style input option 520 of property selection submenu523 may allow the user to select a drawing stroke input tool from agroup of various pre-defined drawing stroke input tools or stamps (e.g.,a “circular pen” drawing stroke input tool, as shown in FIG. 4H),drawing stroke graphical object color input option 522 of propertyselection submenu 523 may allow the user to select a color from a groupof various pre-defined drawing stroke colors (e.g., a color representedby “///” markings, as shown in FIG. 4H), and drawing stroke graphicalobject effect input option 524 of property selection submenu 523 mayallow the user to select one or more effects to be applied to thedrawing stroke from a group of various pre-defined drawing strokeeffects (e.g., no effects, as shown in FIG. 4H). It is to be understoodthat additional or alternative pre-defined drawing stroke input tools ofvarious other pre-defined shapes, colors, effects, and other variouspre-defined drawing stroke graphical object properties may also beprovided by submenu 523 of menu 510 when drawing stroke input option 512of submenu 513 is selected.

Any selections made by the user with respect to the options provided bymenu 510 may be received by graphical display system 301 of firstelectronic device 100 for generating and displaying drawing strokegraphical object content on canvas 501. For example, selections made bythe user with respect to the options provided by menu 510 may bereceived by graphical input command generating module 310 of graphicalinput command generating module 304 of graphical display system 301 asmenu graphical input information 311. In some embodiments, a user mayinteract with menu 510 to provide selections using any suitable pointinginput component of first electronic device 100 (e.g., mouse inputcomponent 110 of FIGS. 4A-4K). For example, a user may interact withmouse input component 110 to point and click a cursor (not shown) at anysuitable portions of screen 500 h of display 112 that may be presentingthe appropriate selectable options of menu 510. It is to be understood,however, that any suitable pointing input component may be used by auser to point to or otherwise identify a particular menu option providedby menu 510 and any suitable input gesture of that pointing inputcomponent or another input component may be used to interact with thatparticular menu option in any particular way.

When a user selects options 512, 520, 522, and 524 of menu 510 forcreating a new drawing stroke graphical object in artwork 11 with acircular pen drawing stroke input tool of a particular color and noeffects, for example, the selections may be received by graphical inputcommand generating module 310 of graphical display system 301 as menugraphical input information 311, and graphical input command generatingmodule 310 may generate one or more appropriate generated menu graphicalinput commands 319 representative of these menu selections. These menuinput commands 319 may be processed by array generating module 380 ofgraphical command processing module 308 to generate at least a portionof generated pixel array data 385 with pixel data that may representthese menu selections. Such menu selection pixel data 385 may bepresented on display 112 in menu 510, for example, after first beingcombined with any received pixel array data 387 by pixel array combiningmodule 388 as combined pixel array data 389, and then provided by activedisplay defining module 390 as at least a portion of active pixel arraydata 399.

For example, as shown by screen 500 h of FIG. 4H, in response to a userselecting drawing stroke input option 512 (e.g., with mouse inputcomponent 110), graphical input command generating module 310 mayreceive certain menu graphical input information 311 and then generate aparticular menu generated graphical input command 319 (e.g., a menugenerated graphical input command with the representative syntax“COMMAND: CLASS=MENU INPUT; SELECT=MENU OPTION 512”), which may beprocessed by modules of graphical command processing module 308 togenerate at least a portion of active pixel array data 399 with updatedmenu pixel data that may present shading indicia at the portion ofscreen 500 h identifying input option 512 in menu 510 of display 112.Similarly, as shown by screen 500 h of FIG. 4H, in response to a userselecting a circular pen drawing stroke graphical object style inputoption 520, graphical display system 301 may generate and present arigid circle within the box identifying input option 520 in menu 510 ofdisplay 112. Moreover, as shown by screen 500 h of FIG. 4H, in responseto a user selecting a particular color with input option 522 and noeffect with input option 524, graphical display system 301 may generateand present a representation of that color (e.g., “///”) within the boxidentifying input option 522 in menu 510 of display 112 and arepresentation of no effect (e.g., “none”) within the box identifyinginput option 524 in menu 510 of display 112.

As also shown in FIG. 3A, menu generated graphical input command 319 mayalso be provided to graphical command sharing module 350, which may beconfigured to pass certain generated graphical input commands 319 on tocommunications circuitry 106 of first device 100 as shared graphicalinput commands 359. Such shared graphical input commands 359 may bereceived by graphical display system 401 of second device 200 asreceived graphical input commands 461. Therefore, in some embodiments,particular menu generated graphical input commands 319 may be providedby graphical command sharing module 350 to graphical display system 401of second device 200 such that similar changes may be made to menu 610of screen 600 h of FIG. 4H. However, as shown in FIG. 4H, because inputsynchs 526 and 626 of menus 510 and 610 are not selected, system 1 maybe configured such that the current active user interface selections offirst electronic device 100 are not synchronized with the current activeuser interface selections of second electronic device 200. Suchnon-synchronization may allow for the current active graphical objecttype selection(s) of submenu 513 and/or the current active graphicalobject property selection(s) of submenu 523 of first device 100 todiffer from the current active graphical object type selection(s) ofsubmenu 613 and/or the current active graphical object propertyselection(s) of submenu 623 of second device 200.

For example, as shown in FIG. 3A, graphical command sharing module 350may include an input synch register 352. In some embodiments, if inputsynch option 526 is selected (e.g., by a user interaction with menu 510)(not shown), that selection may generate specific input information 311that may generate one or more menu generated graphical input commands319, which may set input synch register 352 in graphical command sharingmodule 350. When input synch register 352 is set, then graphical commandsharing module 350 may be configured to pass certain menu generatedgraphical input commands 319 on to graphical display system 401 ofsecond device 200 such that similar changes may be made to menu 610 ofscreen 600 h of FIG. 4H (e.g., for presenting shading indicia at theportion of screen 600 h identifying input option 612 in menu 610 ofdisplay 112). However, because input synch option 526 is not selected onscreen 500 h, input synch register 352 may not be set in graphicalcommand sharing module 350, such that graphical command sharing module350 may not pass on menu generated graphical input commands 319 todevice 200 for updating menu 610 similarly to menu 510.

Once options 512, 520, 522, and 524 of menu 510 have been selected forcreating a drawing stroke graphical object (e.g., with a circular pendrawing stroke input tool of a particular color and no effects), andonce the selections have been received by graphical display system 301and represented on display 112 in menu 510, the user may then interactwith graphical display system 301 for generating one or more new drawingstroke graphical objects in artwork 11 on canvas 501 according to theselected options. Based on any appropriate drawing stroke graphicalobject input information 311, which may be generated by a user (e.g.,using input component 110 and/or input component 110 a) and/or anyapplication running on device 100 (e.g., application 103), graphicalinput command generating module 310 may be configured to define andgenerate at least one new drawing stroke graphical object input command319. This new drawing stroke graphical object input command 319 may thenbe processed by pixel array generating module 380, and eventually byactive display generating module 390 as new active drawing strokegraphical object pixel array data 399 for presentation on display 112.

For example, as also shown by screen 500 h of FIG. 4H, a user mayinteract with graphical display system 301 to generate a new drawingstroke graphical object 580 in artwork 11 on canvas 501. As shown,drawing stroke graphical object 580 may include a straight vertical lineextending along a trail path from a starting point P15 on canvas 501 toan ending point P16 on canvas 501 with the selected drawing strokeproperties of options 520, 522, and 524. For example, in response to auser defining a trail path for a new drawing stroke graphical object(e.g., by dragging a cursor along canvas 501 from point P15 to point P16with mouse input component 110), graphical input command generatingmodule 310 may receive certain drawing stroke input information 311 andthen generate a particular drawing stroke input command 319. Forexample, based on the selected properties of options 520, 522, and 524,and the trail path defined by points P15 and P16, graphical commandgenerating module 310 may generate a new drawing stroke graphical objectinput command 319, which may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE;STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE; START:P15; END:P16”. The newdrawing stroke input command 319 generated by graphical commandgenerating module 310 may then be processed by graphical commandprocessing module 308 (e.g., modules 380, 388, and/or 390) to generateat least a portion of new drawing stroke pixel array data 399 that maypresent new drawing stroke graphical object 580 at the appropriateposition on canvas 501 of screen 500 h of display 112. It is to beunderstood that the above representative syntax of new drawing strokeinput command 319 for generating new drawing stroke graphical object 580is merely representative, and that any suitable syntax may be used byapplication 103 of first electronic device 100 for generating a newdrawing stroke input command 319 in response to received drawing strokeinput information 311.

Although only starting point P15 and ending point P16 of the trail ofnew drawing stroke graphical object 580 may be defined by the exemplaryrepresentative syntax of new drawing stroke input command 319, it is tobe understood that, in other embodiments, multiple additional points ofthe path may be defined by the new drawing stroke input information 311.For example, if the new drawing stroke is a straight line (e.g., as isshown in FIG. 5H by the straight vertical line of drawing strokegraphical object 580 between starting point P15 and ending point P16),graphical command generating module 310 may only define a new drawingstroke input command 319 with a starting point and an ending point inorder for the new drawing stroke input command 319 to adequatelyinstruct graphical command processing module 308 to generate theappropriate path of the new drawing stroke graphical object on canvas501. However, if the new drawing stroke is not a straight line (e.g., adrawing stroke that follows a curved or otherwise non-linear path),graphical command generating module 310 may define a new drawing strokeinput command 319 with multiple additional points along the path betweenthe starting point and the ending point in order for the new drawingstroke input command 319 to adequately instruct graphical commandprocessing module 308 to generate the appropriate path of the newdrawing stroke graphical object on canvas 501.

In some embodiments, rather than generating a single new drawing strokeinput command 319 for a new drawing stroke graphical object to begenerated on canvas 501, graphical command generating module 310 maygenerate multiple new drawing stroke input commands 319, each of whichmay adequately instruct graphical command processing module 308 togenerate a particular portion of the new drawing stroke graphical objecton canvas 501. For example, as shown in FIG. 4H, the trail path ofdrawing stroke graphical object 580 may be defined by starting pointP15, ending point P16, and an intermediate point P17, such thatgraphical command generating module 310 may generate two drawing strokegraphical object input commands 319. The first of such two drawingstroke graphical object input commands 319 for defining drawing strokegraphical object 580 may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE;STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE; START:P15; END:P17”, whilethe second of such two drawing stroke graphical object input commands319 for defining drawing stroke graphical object 580 may have thefollowing representative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE;START:P17; END:P16”. Each one of these two drawing stroke input commands319 generated by graphical command generating module 310 may beprocessed by graphical command processing module 308 to generate atleast a portion of new drawing stroke pixel array data 399 that maypresent new drawing stroke graphical object 580 at the appropriateposition on canvas 501 of screen 500 h of display 112.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, at least somegraphical object input commands 319 generated by graphical commandgenerating module 310 may be provided to communications circuitry 106 offirst electronic device 100 as shared graphical object input commands359. Continuing with the example of FIG. 4H, based on the selectedproperties of options 520, 522, and 524, and points P15 and P16 of thetrail path defined by input information 311 received by first electronicdevice 100, graphical command generating module 310 may generate atleast one new drawing stroke graphical object input command 319 that notonly may be received and processed by pixel array generating module 380to generate at least a portion of new drawing stroke pixel array data385 that may present new drawing stroke graphical object 580 at theappropriate position on canvas 501 of screen 500 h of display 112, butthat also may be received and processed by graphical command sharingmodule 350. Graphical command sharing module 350 may pass on new drawingstroke graphical object input command 319 as shared new drawing strokegraphical object input command 359 to communications circuitry 106,which may provide shared new drawing stroke graphical object inputcommand 359 to graphical display system 401 of second device 200 (e.g.,as received new drawing stroke graphical object input command 461) togenerate at least a portion of new drawing stroke pixel array data 489that may present a new drawing stroke graphical object 680 at theappropriate position on canvas 601 of screen 600 h of display 212.

Such a received new drawing stroke graphical object input command 461may be received by pixel array requesting module 460 of graphicaldisplay system 401 of second device 200. For example, pixel arrayrequesting module 460 may process a received new drawing strokegraphical object input command 461 and may pass that received newdrawing stroke graphical object input command 461 on to pixel arraygenerating module 480, such that at least a portion of new drawingstroke pixel array data 499 may be generated to present at least aportion of a new drawing stroke graphical object 680 at the appropriateposition on canvas 601 of screen 600 h of display 212. As shown in FIG.4H, because only a zoomed-in portion 601 z′ of canvas 601 may bepresented on screen 600 h, only a portion of new drawing strokegraphical object 580 on canvas 501 of screen 500 h may be displayed onscreen 600 h as new drawing stroke graphical object 680. For example,although the entirety of the new drawing stroke graphical object inputcommand 461 may be processed by pixel array generating module 480 togenerate generated pixel array data 485 that may be presented on canvas601 as the entirety of new drawing stroke graphical object 680, activedisplay defining module 490 may only pass a portion of that pixel arraydata on as active pixel array data 499 to be displayed on screen 600 hof FIG. 4H.

In other embodiments, rather than passing each new received drawingstroke graphical object input command 461 defining portions of the newdrawing stroke graphical object 680 on to pixel array generating module480 for processing as pixel array data, pixel array requesting module460 may determine that only certain new received drawing strokegraphical object input commands 461 should be passed on to pixel arraygenerating module 480 for processing as pixel array data. For example,pixel array requesting module 460 may also be configured to receiveactive display adjustment pixel array data request information 495 fromactive display defining module 490. This active display adjustment pixelarray data request information 495 may be indicative of the portion ofcanvas 601 that is currently actively displayed on display 212 (e.g.,zoomed-in portion 601 z′). Therefore, in some embodiments, pixel arrayrequesting module 460 may determine that only the new received drawingstroke graphical object input commands 461 that may be processed toupdate currently actively displayed canvas portion 601 z′ may be passedon to pixel array generating module 480 for processing as pixel arraydata 485. This may save some processing power or other resources ofsecond device 200.

For example, following the above example where graphical commandgenerating module 310 may generate two drawing stroke graphical objectinput commands 319 for new drawing stroke graphical object 580, each ofthose commands 319 may be received by pixel array requesting module 460as one of two received drawing stroke graphical object input commands461 for defining a portion of new drawing stroke graphical object 680 oncanvas 601. The first of such two received drawing stroke graphicalobject input commands 461 for defining drawing stroke graphical object680 may have the following representative syntax: “COMMAND:CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE; STYLE=CIRCULAR PEN;COLOR=///; EFFECT=NONE; START:P15; END:P17”, while the second of suchtwo received drawing stroke graphical object input commands 461 fordefining drawing stroke graphical object 680 may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE;START:P17; END:P16”. When the first of these two received drawing strokegraphical object input commands 461 is received by pixel arrayrequesting module 460, pixel array requesting module 460 may determinethat the portion of new drawing stroke graphical object 680 defined bythat first received drawing stroke graphical object input command 461would be positioned in the currently actively displayed canvas portion601 z′ of canvas 601. That is, by determining that both start point P15and end point P17 defined by the first of these two received drawingstroke graphical object input commands 461 fall within currentlyactively displayed canvas portion 601 z′ of canvas 601 (e.g., byanalyzing active display adjustment pixel array data request information495), pixel array requesting module 460 may be configured to pass thatfirst of the two received drawing stroke graphical object input commands461 on to pixel array generating module 480 for processing as pixelarray data.

However, when the second of these two received drawing stroke graphicalobject input commands 461 is received by pixel array requesting module460, pixel array requesting module 460 may determine that the portion ofnew drawing stroke graphical object 680 defined by that second receiveddrawing stroke graphical object input command 461 would not bepositioned in the currently actively displayed canvas portion 601 z′ ofcanvas 601. That is, by determining that the portion of canvas 601between start point P17 and end point P16 defined by the second of thesetwo received drawing stroke graphical object input commands 461 does notfall within currently actively displayed canvas portion 601 z′ of canvas601 (e.g., by analyzing active display adjustment pixel array datarequest information 495), pixel array requesting module 460 may beconfigured to not pass that second of the two received drawing strokegraphical object input commands 461 on to pixel array generating module480 for processing as pixel array data. This may save some processingpower or other resources of second device 200. In some embodiments,pixel array requesting module 460 may only be configured to selectivelypass certain received graphical object input commands 461 on to pixelarray generating module 480 when a certain operating condition of device200 is met (e.g., the battery of second device 200 is below a certainthreshold). In some embodiments, pixel array requesting module 460 maybe configured to store or otherwise make accessible to system 401 anyreceived graphical object input commands 461 that are not immediatelypassed on by module 460 to module 480. Instead, such commands may belater accessed by module 460 for updating a portion of canvas 601 whenthat portion is made an actively displayed portion of canvas 601 ondisplay 212.

Alternatively, as mentioned, at least some new drawing stroke graphicalobject pixel array data generated by graphical display system 301 may beprovided to communications circuitry 106 of first electronic device 100as shared drawing stroke graphical object pixel array data.Communications circuitry 106 may then provide the shared drawing strokegraphical object pixel array data to communications circuitry 206 ofsecond electronic device 200 via communications media 55, andcommunications circuitry 206 may provide the shared drawing strokegraphical object pixel array data as received drawing stroke graphicalobject pixel array data to graphical display system 401 for presentationon display 212.

For example, in some embodiments, despite utilizing common semantics inresponse to particular input commands, first electronic device 100 andsecond electronic device 200 may have different resources orcapabilities and may sometimes rather share pixel array data instead ofor in addition to sharing input commands. For example, upon receiving areceived drawing stroke graphical object input command 461, pixel arrayrequesting module 460 of graphical display system 401 may determine thatsecond electronic device 200 does not currently have enough processingpower or capabilities for enabling pixel array generating module 480 togenerate new drawing stroke pixel array data from the received drawingstroke graphical object input command 461 (e.g., graphical displaysystem 401 may determine that second device 200 is trying to conserveits power supply 208 or is otherwise unable to generate pixel array databased on the received input command). In some embodiments, in responseto such a determination, rather than passing received drawing strokegraphical object input command 461 on to pixel array generating module480, pixel array requesting module 460 may instead send a command tographical display system 301 of first device 100 instructing graphicaldisplay system 301 to transmit new drawing stroke pixel array data(e.g., as shared drawing stroke pixel array data) to graphical displaysystem 401 (e.g., as received drawing stroke pixel array data), suchthat graphical display system 401 may avoid having to independentlyprocess a received drawing stroke graphical object input command 461 foradding new drawing stroke graphical object 680 on canvas 601.

For example, in response to determining that system 401 would ratherreceive corresponding pixel array data from device 100 than generate itsown pixel array data from received drawing stroke graphical object inputcommand 461, pixel array requesting module 460 may generate a sharedpixel array data request command 469. In some embodiments, shared pixelarray data request command 469 may request the pixel array data for theentirety of canvas 501. In other embodiments, shared pixel array datarequest command 469 may request the pixel array data for the portion ofcanvas 501 associated with the currently active display portion ofcanvas 601 (e.g., zoomed-in canvas portion 601 z′), which may bedetermined by pixel array requesting module 460 based on active displayadjustment pixel array data request information 495. In yet otherembodiments, shared pixel array data request command 469 may requestonly the pixel array data that was updated based on the shared graphicalobject input command.

In response to receiving received drawing stroke graphical object inputcommand 461, and in response to determining that system 401 would ratherreceive corresponding pixel array data from device 100 than generate itsown pixel array data from received drawing stroke graphical object inputcommand 461, pixel array requesting module 460 may generate a sharedpixel array data request command 469 that may request only the pixelarray data that updated canvas 501 based on the drawing stroke graphicalobject input command 319 that was also provided to system 401 asreceived drawing stroke graphical object input command 461. For example,such a shared pixel array data request command 469 may request only thepixel array data that was generated to update screen 500 g of FIG. 4G toscreen 500 h of FIG. 4H.

For example, in response to receiving received drawing stroke graphicalobject input command 461 that may have the following representativesyntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE;STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE; START:P15; END:P16”, pixelarray requesting module 460 may generate a shared pixel array datarequest command 469 that may have the following representative syntax:“COMMAND: CLASS=PIXEL ARRAY DATA REQUEST; TYPE=DRAWING STROKE;STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE; START:P15; END:P16”. Thisshared pixel array data request command 469 may be provided by pixelarray requesting module 460 to communications circuitry 206 of seconddevice 200, which may then provide the shared pixel array data requestcommand to communications circuitry 106 of first device 100 viacommunications media 55, and communications circuitry 106 may providethe shared pixel array data request command as received pixel array datarequest command 371 to graphical display system 301.

Received pixel array data request command 371 may be received bygraphical display system 301 at pixel array sharing module 370, whichmay be configured to acquire the portion of pixel array data 389requested by received command 371. For example, pixel array sharingmodule 370 may be configured to receive both combined pixel array data389 from pixel array combining module 388 and received pixel array datarequest command 371 from communications circuitry 106, and then togenerate shared pixel array data 379. Following the example in whichshared pixel array data request command 469 may request only the pixelarray data that was generated to update screen 500 g of FIG. 4G toscreen 500 h of FIG. 4H, shared pixel array data 379 may be the portionof combined pixel array data 389 that was provided to pixel arraycombining module 388 by pixel array generating module 380 as new drawingstroke graphical object generated pixel array data 385, which may havebeen generated by pixel array generating module 380 in response toprocessing a new drawing stroke graphical object input command 319defining new drawing stroke graphical object 580.

Such shared pixel array data 379 may be provided by pixel array sharingmodule 370 to communications circuitry 106 of first device 100, whichmay then provide the shared pixel array data to communications circuitry206 of second device 200 via communications media 55, and communicationscircuitry 206 may provide the shared pixel array data as received pixelarray data 487 to graphical display system 401. Received pixel arraydata 487 may be provided to pixel array combining module 488 ofgraphical display system 401. Pixel array combining module 488 may beconfigured to combine any pixel array data 485 generated internally bypixel array generating module 480 of graphical display system 401 withany received pixel array data 487 received from any external entity(e.g., graphical display system 301 of first device 100) in order togenerate combined pixel array data 489. This combined pixel array data489 may then be received by active display defining module 490, andactive display defining module 490 may pass at least a portion ofcombined pixel array data 489 on to display 212 as active pixel arraydata 499.

Following the example in which received pixel array data 487 is thepixel array data for updating canvas 601 with drawing stroke graphicalobject 680, pixel array combining module 488 may combine this data withthe other pixel array data defining canvas 601 (e.g., the pixel arraydata defining graphical objects 630, 640, 650, 660, and 670) and maygenerate combined pixel array data 489. Next active display definingmodule 490 may only pass the portion of this combined pixel array data489 defining the portion of canvas 601 currently actively displayed ondisplay 212 (e.g., zoomed-in canvas portion 601 z′) on to display 212 asactive pixel array data 499. An example of such active pixel array data499 may be displayed by screen 600 h of FIG. 4H.

Although not shown, in some embodiments, a user's interaction with firstdevice 100 for generating a new graphical object on canvas 501 mayadjust the actively displayed portion of canvas 601 on second device200. For example, as a user of first device 100 generates inputinformation 311 for defining the trail path of drawing stroke graphicalobject 580 between points P15 and P16 on canvas 501 (e.g., by dragging acursor of mouse input component 110 along canvas 501), when the user'sinteraction extends beyond point P17 towards P16 such that the trailpath extends beyond outline 602, system 1 may be configured toautomatically move outline 602 with the trail path. This may allow forthe new graphical object being created to be shown by the activelydisplayed portion of canvas 601 on second device 200 (e.g., as opposedto the example of FIG. 4H, in which only a portion of new drawing strokegraphical object 680 may be presented in actively displayed portion 601z′ of canvas 601 on screen 600 h). However, in other embodiments,outline 602 may only be moved along canvas 501 in response to a user offirst device 100 directly interacting with outline 602 (e.g., asdescribed above with respect to FIGS. 4F and 4G). For example, a user ofsystem 1 may interact with outline lock 528 and/or outline lock 628 toadjust the ways in which outline 602 may be moved or otherwise adjusted.

As mentioned, (e.g., with respect to FIGS. 4E and 4F), a user mayinteract with second device 200 to generate input information forchanging the portion of canvas 601 that may be displayed on display 212.As shown by screen 600 h of FIG. 4H, for example, a user of secondelectronic device 200 may provide a multi-touch “pinch” user inputgesture on touch screen 211 by imparting a first touch event or gesturefrom point P18 to point P20 in the direction of arrow g1 on canvas 601,while also imparting a second touch event or gesture from point P19 topoint P21 in the direction of arrow g2 on canvas 601, which may changethe distance between the set points on display 212 (e.g., the displayeddistance between canvas points P18 and P19 as shown on screen 600 h maybe pinched or reduced to the distance between canvas points P20 and P21as shown on screen 600 h). Any selections or interactions made by theuser with respect to identifying the portion of canvas 601 to beactively displayed on display 212 may be received by graphical displaysystem 401 of second electronic device 200 for updating the visibleportion of canvas 601 on display 212. For example, when a useridentifies points P18-P21 on canvas 601 of screen 600 h of FIG. 4H in apinch gesture, such user interactions may be received by active displayadjusting module 420 of graphical command generating module 404 ofgraphical display system 401 as active display adjustment inputinformation 421, and active display adjusting module 420 may generateone or more active display adjustment input commands 429 representativeof these user interactions. These active display adjustment inputcommands 429 may be processed by active display defining module 490 ofgraphical command processing module 408 to adjust the portion of pixelarray data of canvas 601 (e.g., combined pixel array data 489) that maybe actively displayed (e.g., as active pixel array data 499) on display212.

For example, as shown by screen 600 i of FIG. 4I, in response to a userinteracting with second device 200 to identify the adjusted portion ofcanvas 601 to be actively displayed on display 212 (e.g., pinch gesturepoints P18-P21 with touch screen I/O component 211), active displayadjusting module 420 may receive certain active display adjustment inputinformation 421 and may then generate a particular active displayadjustment input command 429 (e.g., an active display adjustment inputcommand with the representative syntax “COMMAND: CLASS=ACTIVE DISPLAYADJUSTMENT INPUT; ADJUST=PINCH; STARTPOINT1=P18; ENDPOINT1=P20;STARTPOINT2=P19; ENDPOINT2=P21”). Such an active display adjustmentinput command 429 may then be processed by active display definingmodule 490 to adjust the portion of combined pixel array data 489 ofcanvas 601 that may be actively displayed as active pixel array data 499on display 212, as shown by screen 600 i of FIG. 4I. For example, asshown in FIG. 4I, a pinched canvas portion 601 z″ of canvas 601 may beactively displayed by screen 600 i of display 212. Such a pinch gestureuser input may expand the portion of canvas 601 actively displayed bysecond device 200.

Continuing with the example of FIGS. 4H and 4I, based on the activedisplay adjustment input information 421 received by active displayadjusting module 420 of second electronic device 200, active displayadjusting module 420 may generate an active display adjustment inputcommand 429 that not only may be received and processed by activedisplay defining module 490 to adjust the portion of combined pixelarray data 489 of canvas 601 that may be actively displayed as activepixel array data 499 on display 212 as pinched canvas portion 601 z″ ofscreen 600 i of display 212, but that also may be received and processed(i.e., as received outline moving command 341) by graphical displaysystem 301 of first electronic device 100 to generate at least a portionof new pixel array data that may present an adjusted second deviceoutline 602 at the appropriate position on canvas 501 of screen 500 i ofdisplay 112. Adjusted second device outline 602 may be configured toidentify on canvas 501 of screen 500 i the portion of collaborativeartwork 11 on canvas 501 that is currently actively displayed by pinchedcanvas portion 601 z″ on screen 600 i of display 212 (i.e., the pinchedportion from points P18/P19 to points P20/P21 of synched canvases 501and 601).

Alternatively, rather than expanding the portion of canvas 601 activelydisplayed by second device 200 by interacting with second device 200, auser may alternatively interact with outline 602 on canvas 501 of firstdevice 100 in order to alter the size of the portion of canvas 601 to beactively displayed on display 212. As shown by screen 500 h of FIG. 4H,for example, a user of first electronic device 100 may select a pointP14 on canvas 501 that may include a displayed portion of outline 602that the user would like to expand to another point on canvas 501 (e.g.,to point P14′, in the direction of arrow E). A user may interact withfirst electronic device 100 in any suitable way (e.g., using inputcomponent 110 and/or input component 110 a) to identify point P14 ofoutline 602 and to instruct device 100 to expand that point of outline602 from point P14 on canvas 501 to point P14′ on canvas 501 in anysuitable way. For example, a user may click on that portion of outline602 and drag it in the direction of arrow E to point P14′ (e.g., usingmouse input component 110). Although not shown, artist menu 510 mayprovide a user of first electronic device 100 with input options forappropriately interacting with device 100 to easily adjust the portionof canvas 501 covered by outline 602 on display 112.

Any selections or interactions made by the user of first device 100 foridentifying how to adjust outline 602 with respect to canvas 501 may bereceived by graphical display system 301 of first electronic device 100for updating outline 602 on canvas 501. For example, when a useridentifies initial outline point P14 and expanded outline point P14′ oncanvas 501 of screen 500 h of FIG. 4H, such user interactions may bereceived by outline selecting module 330 of graphical command generatingmodule 304 of graphical display system 301 as outline selecting inputinformation 331, and outline selecting module 330 may generate one ormore generated outline moving commands 335 representative of these userinteractions (e.g., one or more generated outline moving input commandswith the representative syntax “COMMAND: CLASS=OUTLINE MOVEMENT INPUT;ADJUST=EXPAND; FROMPOINT=P14; TOPOINT=P14′”). These generated outlinemoving commands 335 may be processed by outline moving module 340 ofgraphical command processing module 308, which may pass generatedoutline moving commands 335 on to pixel array generating module 380 asmaster outline moving commands 349 (e.g., if outline moving module 340does not receive any received outline moving commands 341 of higherpriority). Pixel array generating module 380 may then generateappropriate pixel array data for an updated outline 602 to be displayedon display 112. For example, as shown by screen 500 i of FIG. 4I, inresponse to a user interacting with first device 100 to identify how toadjust outline 602 with respect to canvas 501 on display 112, such thatappropriate outline selecting input information 331 may be provided tooutline selecting module 330 for generating the appropriate generatedoutline moving command 335, and such that the appropriate master outlinemoving commands 349 may then be provided to pixel array generatingmodule 380 for generating appropriate pixel array data for an updatedoutline 602 to be displayed on display 112, outline 602 may be moved toa new position on canvas 501.

Continuing with this example, based on the outline selecting inputinformation 331 received by outline selecting module 330 of firstelectronic device 100, outline selecting module 330 may also generateone or more shared other device active display adjustment input commands339 that may be received and processed (i.e., as received own activedisplay adjustment input command 491) by graphical display system 401 ofsecond electronic device 200 to adjust the portion of canvas 601 thatmay be actively displayed on screen 600 g of display 212. For example, ashared other device active display adjustment input command 339 may bereceived as received own active display adjustment input command 491 byactive display defining module 490 of graphical command processingmodule 408 of second electronic device 200. Active display definingmodule 490 may be configured to process received own active displayadjustment input command 491 to adjust the portion of combined pixelarray data 489 of canvas 601 that may be actively displayed as activepixel array data 499 on display 212, as shown by screen 600 i of FIG.4I. For example, as shown in FIG. 4I, an adjusted zoomed-in canvasportion 601 z″ of canvas 601 (e.g., with new point P14′) may be activelydisplayed by screen 600 i of display 212. In some embodiments, a sharedother device active display adjustment input command 339 may be similarto an associated generated outline moving input command 335 that hasalso been generated by outline selecting module 330 for particular inputinformation 331 (e.g., a shared other device active display adjustmentinput command 339 may have the representative syntax “COMMAND:CLASS=OTHER DEVICE ACTIVE DISPLAY ADJUSTMENT INPUT; ADJUST=EXPAND;FROMPOINT=P14; TOPOINT=P14′”).

When the active display of second device 200 is adjusted, whether inresponse to an active display adjustment command 429 generated by seconddevice 200 or in response to an active display adjustment command 491received from first device 100, second device 200 may be configured toaccess one or more input commands or one or more portions of pixel arraydata (e.g., from first device 100 or from memory 204 of second device200) to update the new portion of canvas 601 displayed by the adjustedactive display. For example, as mentioned above, pixel array requestingmodule 460 may be configured to only pass received graphical objectinput commands 461 that may be processed to update the currentlyactively displayed portion of canvas portion 601. Therefore, when thecurrently actively displayed portion of canvas portion 601 is adjusted,canvas 601 may not include all of the graphical content of canvas 501.

Module 460 may be configured only to pass on a particular receivedcommand 461 to pixel array generating module 480 for processing as pixelarray data 485 when that command may be processed to update thecurrently actively displayed portion of canvas portion 601. In someembodiments, graphical display system 401 may be configured to store(e.g., in memory 204 of device 200) or otherwise have access to (e.g.,from first device 100) any received graphical object input commands 461or to only those received graphical object input commands 461 that havenot already been passed on to module 480 for processing. For example, inresponse to any active display adjustment command 429 or any activedisplay adjustment command 491 received by module 490 that defines a newactively displayed portion of canvas 601, module 490 may provide requestinformation 495 to module 460. Such request information 495 may instructmodule 460 to access and pass on to pixel array generating module 480any previously received input commands 461 that may be processed toupdate the new actively displayed portion of canvas portion 601. Suchpreviously received commands 461 may be stored in memory 200 of device200 and accessed by module 460, or stored by device 100 and provided todevice 200 when requested.

Following the above example, the second of two received drawing strokegraphical object input commands 461 for defining drawing strokegraphical object 680 may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE;STYLE=CIRCULAR PEN; COLOR=///; EFFECT=NONE; START:P17; END:P16” and maynot have been passed on by module 460 to module 480 when portion 601 z′of canvas 601 was actively displayed on display 212. However, when theactively displayed portion of canvas 601 is adjusted to be portion 601z″ of FIG. 4I, module 460 may access and pass that second of tworeceived drawing stroke graphical object input commands 461 on to module480 for generating at least a portion of object 680 on a portion ofcanvas 601 that is included in canvas portion 601 z″ but not canvasportion 601 z′ (e.g., a portion of object 680 between point P17 andpoint P16). By only processing the input commands necessary to generatethe graphical content of canvas 601 that is currently activelydisplayed, second device 200 may preserve certain resources (e.g.,processing resources or power resources). In some embodiments, pixelarray requesting module 460 may only be configured to selectively passcertain received graphical object input commands 461 on to pixel arraygenerating module 480 when a certain operating condition of device 200is met (e.g., the battery of second device 200 is below a certainthreshold).

Alternatively, when a new portion of canvas 601 is included as anactively displayed portion of canvas 601 on display 212, second device200 may rather receive shared pixel array data for updating that portionof canvas 601 instead of or in addition to processing received inputcommands. For example, upon receiving information 495 indicative of anew actively displayed portion of canvas 601 on display 212, pixel arrayrequesting module 460 may determine that second electronic device 200does not currently have enough processing power or capabilities forenabling pixel array generating module 480 to process accessible inputcommands 461 for properly updating the new actively displayed portion ofcanvas 601 (e.g., graphical display system 401 may determine that seconddevice 200 is trying to conserve its power supply 208 or is otherwiseunable to process or access such input commands). In some embodiments,in response to such a determination, pixel array requesting module 460may instead send a command to graphical display system 301 of firstdevice 100 instructing graphical display system 301 to transmit newpixel array data (e.g., as shared pixel array data) to graphical displaysystem 401 (e.g., as received pixel array data) that may be the pixelarray data of the new actively displayed portion of canvas 601.

For example, in response to determining that system 401 would ratherreceive corresponding pixel array data from device 100 than generate itsown pixel array data from received graphical object input commands inorder to ensure that the current actively displayed portion of canvas601 is synched or otherwise similar to canvas 501, pixel arrayrequesting module 460 may generate a shared pixel array data requestcommand 469. Such a shared pixel array data request command 469 requestthe pixel array data for the portion of canvas 501 associated with thenew portion of canvas 601 that is actively displayed (e.g., the portionof canvas 601 z″ of FIG. 4I that is not a portion of canvas 601 z′ ofFIG. 4H, which may be determined by pixel array requesting module 460based on active display adjustment pixel array data request information495. In yet other embodiments, shared pixel array data request command469 may request only the pixel array data of the new canvas portion thathas been updated by input commands since that canvas portion was lastdisplayed by display 212.

This shared pixel array data request command 469 may be provided bypixel array requesting module 460 to communications circuitry 206 ofsecond device 200, which may then provide the shared pixel array datarequest command to communications circuitry 106 of first device 100 viacommunications media 55, and communications circuitry 106 may providethe shared pixel array data request command as received pixel array datarequest command 371 to graphical display system 301. Received pixelarray data request command 371 may be received by graphical displaysystem 301 at pixel array sharing module 370, which may be configured toacquire the portion of pixel array data 389 requested by receivedcommand 371 and then to generate shared pixel array data 379. Suchshared pixel array data 379 may be provided as received pixel array data487 to graphical display system 401, and received pixel array data 487may be provided to pixel array combining module 488 of graphical displaysystem 401 as at least a portion of the appropriate pixel array data forthe newly displayed portion of canvas 601 on display 212.

As another example, a user may interact with second device 200 togenerate input information for pulling rather than pinching canvas 601to change the portion of canvas 601 that may be displayed on display212. As shown by screen 600 i of FIG. 4I, for example, a user of secondelectronic device 200 may provide a multi-touch “pull” user inputgesture on touch screen 211 by imparting a first touch event or gesturefrom point P20 to point P18 in the opposite direction of arrow g1 oncanvas 601, while also imparting a second touch event or gesture frompoint P21 to point P19 in the opposite direction of arrow g2 on canvas601, which may change the distance between the set points on display 212(e.g., the displayed distance between canvas points P20 and P21 as shownon screen 600 i may be pulled or expanded to the distance between canvaspoints P18 and P19 as shown on screen 600 i). In response to a userinteracting with second device 200 to identify the adjusted portion ofcanvas 601 to be actively displayed on display 212 (e.g., pull gesturepoints P18-P21 with touch screen I/O component 211), active displayadjusting module 420 may receive certain active display adjustment inputinformation 421 and may then generate a particular active displayadjustment input command 429 (e.g., an active display adjustment inputcommand with the representative syntax “COMMAND: CLASS=ACTIVE DISPLAYADJUSTMENT INPUT; ADJUST=PULL; STARTPOINT1=P20; ENDPOINT1=P18;STARTPOINT2=P21; ENDPOINT2=P19”). Such an active display adjustmentinput command 429 may then be processed by active display definingmodule 490 to adjust the portion of combined pixel array data 489 ofcanvas 601 that may be actively displayed as active pixel array data 499on display 212, as shown by screen 600 h of FIG. 4H. For example, asshown in FIG. 4H, a pulled canvas portion 601 z′ of canvas 601 may beactively displayed by screen 600 h of display 212. Such a pull gestureuser input may expand the portion of canvas 601 actively displayed bysecond device 200.

Continuing with the example of FIGS. 4H and 4I, based on the activedisplay adjustment input information 421 received by active displayadjusting module 420 of second electronic device 200, active displayadjusting module 420 may generate an active display adjustment inputcommand 429 that not only may be received and processed by activedisplay defining module 490 to adjust the portion of combined pixelarray data 489 of canvas 601 that may be actively displayed as activepixel array data 499 on display 212 as pulled canvas portion 601 z′ ofscreen 600 h of display 212, but that also may be received and processed(i.e., as received outline moving command 341) by graphical displaysystem 301 of first electronic device 100 to generate at least a portionof new pixel array data that may present an adjusted second deviceoutline 602 at the appropriate position on canvas 501 of screen 500 h ofdisplay 112. Adjusted second device outline 602 may be configured toidentify on canvas 501 of screen 500 h the portion of collaborativeartwork 11 on canvas 501 that is currently actively displayed by pulledcanvas portion 601 z′ on screen 600 h of display 212 (i.e., the pulledportion from points P20/P21 to points P18/P19 of synched canvases 501and 601).

As yet another example, a user may interact with second device 200 togenerate input information for rotating rather than pinching or pullingcanvas 601 to change the portion of canvas 601 that may be displayed ondisplay 212. As shown by screen 600 i of FIG. 4I, for example, a user ofsecond electronic device 200 may provide a multi-touch “rotate” userinput gesture on touch screen 211 by imparting a first touch event orgesture from point P18 to point P22 in the direction of arrow g3 oncanvas 601, while also imparting a second touch event or gesture frompoint P19 to point P23 in the direction of arrow g4 on canvas 601, whichmay change the orientation of display 212 with respect to the segmentsbetween the set points. In response to a user interacting with seconddevice 200 to identify the adjusted portion of canvas 601 to be activelydisplayed on display 212 (e.g., rotate gesture points P18, P19, P22, andP23 with touch screen I/O component 211), active display adjustingmodule 420 may receive certain active display adjustment inputinformation 421 and may then generate a particular active displayadjustment input command 429 (e.g., an active display adjustment inputcommand with the representative syntax “COMMAND: CLASS=ACTIVE DISPLAYADJUSTMENT INPUT; ADJUST=ROTATE; STARTPOINT1=P18; ENDPOINT1=P22;STARTPOINT2=P19; ENDPOINT2=P23”). Such an active display adjustmentinput command 429 may then be processed by active display definingmodule 490 to adjust the portion of combined pixel array data 489 ofcanvas 601 that may be actively displayed as active pixel array data 499on display 212, as shown by screen 600 j of FIG. 4J. For example, asshown in FIG. 4J, a rotated canvas portion 601 z′″ of canvas 601 may beactively displayed by screen 600 j of display 212. Such a rotate gestureuser input may rotate the portion of canvas 601 actively displayed bysecond device 200.

It is to be understood that a user may interact with second device 200to rotate the actively displayed portion of canvas 601 in acounter-clockwise direction, rather than the clockwise direction shownwith respect to FIGS. 4I and 4J. It is also to be understood that arotate gesture user input for changing the portion of canvas 601 thatmay be displayed on display 212 may be achieved in any other suitableway. For example, a user of second device 200 may rotate device 200within the X-Y plane of FIG. 4I in the direction of arrow R (e.g., withrespect to first device 100), and that movement may be detected bysensor 214 of second device 200 and incorporated into active displayadjustment input information 421 that may be received and processed bymodule 420.

Continuing with the example of FIGS. 4I and 4J, based on the activedisplay adjustment input information 421 received by active displayadjusting module 420 of second electronic device 200, active displayadjusting module 420 may generate an active display adjustment inputcommand 429 that not only may be received and processed by activedisplay defining module 490 to adjust the portion of combined pixelarray data 489 of canvas 601 that may be actively displayed as activepixel array data 499 on display 212 as rotated canvas portion 601 z′″ ofscreen 600 j of display 212, but that also may be received and processed(i.e., as received outline moving command 341) by graphical displaysystem 301 of first electronic device 100 to generate at least a portionof new pixel array data that may present an adjusted second deviceoutline 602 at the appropriate position on canvas 501 of screen 500 j ofdisplay 112. Adjusted second device outline 602 may be configured toidentify on canvas 501 of screen 500 j the portion of collaborativeartwork 11 on canvas 601 that is currently actively displayed by rotatedcanvas portion 601 z′″ on screen 600 j of display 212. It is to beunderstood that any user interaction with first device 100 to move orotherwise change the size or orientation of outline 602 on canvas 501 ofdisplay 112 may alternatively be accomplished through appropriate userinteraction with second device 200 to pan or otherwise change the sizeor orientation of the actively displayed portion of canvas 601 ondisplay 212.

Continuing with the example of FIG. 4J, a user of first electronicdevice 100 may select input synch option 526 of menu 510 and/or a userof second electronic device 200 may select input synch option 626 ofmenu 610. When input synch options 526 and 626 are selected, system 1may be configured such that whenever a user interacts with first device100 to adjust a menu selection of menu 510 or to move a cursor or userposition on canvas 501, the same changes may occur on second device 200as if a user had interacted directly with second device 200, and viceversa. Therefore, as also shown in FIG. 4J, because input synch options526 and 626 are selected, a user of first electronic device 100 and/or auser of second electronic device 200 may select drawing stroke inputoption 512/612 for creating a new free-form drawing stroke in artwork 11on canvases 501/601. Moreover, when a user selects drawing stroke inputoption 512/612, drawing stroke graphical object style input option520/620 may allow the user to select a drawing stroke input tool from agroup of various pre-defined drawing stroke input tools or stamps (e.g.,a “paint brush” drawing stroke input tool, as shown in FIG. 4J), drawingstroke graphical object color input option 522/622 may allow the user toselect a color from a group of various pre-defined drawing stroke colors(e.g., a solid color represented by “▪”, as shown in FIG. 4J), anddrawing stroke graphical object effect input option 524/624 may allowthe user to select one or more effects to be applied to the drawingstroke from a group of various pre-defined drawing stroke effects (e.g.,a “shake to splatter” effect, as shown in FIG. 4J). It is to beunderstood that additional or alternative pre-defined drawing strokeinput tools of various other pre-defined shapes, colors, effects, andother various pre-defined drawing stroke graphical object properties mayalso be provided by submenu 523/623 of menu 510/610 when drawing strokeinput option 512/612 is selected.

Any selections made by the user with respect to the options provided bymenus 510/610 may be received by graphical display systems 301/401 ofelectronic devices 100/200 for generating and displaying drawing strokegraphical object content on canvases 501/601. For example, as shown inFIG. 3B, graphical command sharing module 450 may include an input synchregister 452. When input synch option 626 is selected (e.g., by a userinteraction with menu 610 of second device 200), that selection maygenerate specific input information 411 that may generate one or moremenu generated graphical input commands 419, which may set input synchregister 452 in graphical command sharing module 450. When input synchregister 452 is set, then graphical command sharing module 450 may beconfigured to pass certain menu generated graphical input commands 419on to graphical display system 301 of first device 100 such that similarchanges may be made to menu 510 of screen 500 j of FIG. 4J (e.g., forpresenting shading indicia at the portion of screen 500 j identifyinginput option 512 in menu 510 of display 112 if a user of second device200 initially selects option 612 in menu 610).

Once options 512/612, 520/620, 522/622, and 524/624 of menus 510/610have been selected and synchronized for creating a drawing strokegraphical object (e.g., with a paint brush drawing stroke input tool ofa particular color and a “shake to splatter” effect), and once theselections have been received by graphical display systems 301/401 andrepresented on displays 112/212 in menus 510/610, a user may theninteract with either first device 100 or second device 200 to generateone or more new drawing stroke graphical objects in artwork 11 on bothof canvases 501 and 601 according to the selected options. For example,when a user interacts with second device 200, based on any appropriatedrawing stroke graphical object input information 411, which may begenerated by the user (e.g., using input component 210 and/or inputcomponent 210 a) and/or any application running on device 200 (e.g.,application 203), graphical input command generating module 410 may beconfigured to define and generate at least one new drawing strokegraphical object input command 419. This new drawing stroke graphicalobject input command 419 may then be processed by pixel array generatingmodule 480, and eventually by active display generating module 490 asnew active drawing stroke graphical object pixel array data 499 forpresentation on display 212.

For example, as also shown by screen 600 j of FIG. 4J, a user mayinteract with graphical display system 401 to generate a new drawingstroke graphical object 690 in artwork 11 on canvas 601. As shown,drawing stroke graphical object 690 may include a straight uniform paintbrush stroke body portion 692 extending along a trail path from astarting point P24 on canvas 601 to an ending point P25 on canvas 601with the selected drawing stroke properties of options 620, 622, and624. For example, in response to a user defining a trail path for a newdrawing stroke graphical object (e.g., by dragging a finger along canvas601 from point P24 to point P25 with touch screen input component 210),graphical input command generating module 410 may receive certaindrawing stroke input information 411 and then generate a particulardrawing stroke input command 419. This particular drawing stroke inputcommand 419 may be received by processing module 408 of graphicaldisplay system 401 to generate straight uniform paint brush stroke bodyportion 692 of new drawing stroke graphical object 690 on display 212.

The selected “shake to splatter” input effect may increase the distancethat additional drawing stroke graphical object data may be stamped awayfrom body portion 692 of the stamped trail of the paint brush inputtool. For example, as shown in FIG. 4J, drawing stroke graphical object690 may also include a splatter portion 694, which may be additionaldrawing stroke graphical object data representative of paint brushsplatter. Splatter portion 694 may extend a first splatter distance S1along and away from a first portion of body portion 692 (e.g., adjacentpoint P24) and that may extend a second splatter distance S2 along andaway from another portion of body portion 692 (e.g., adjacent pointP25). The splatter distance of splatter portion 694 of drawing strokegraphical object 690 may be determined by any suitable data accessibleto second device 200 from any suitable source. For example, in someembodiments, the splatter distance of drawing stroke graphical object690 may be determined by a detected magnitude of a particular movementof second device 200 at a particular time (e.g., as a user of device 200may define a trail path for new drawing stroke graphical object 690 bydragging a finger along canvas 601 from point P24 to point P25 withtouch screen input component 210, the user may also define one or moresuitable splatter distances by shaking device 200 (e.g., as may bedetected by sensor 214)).

Based on the selected properties of options 620, 622, and 624, the trailpath defined by points P24 and P25, and any received splatter distancedata, graphical command generating module 410 may generate a new drawingstroke graphical object input command 419, which may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=PAINT BRUSH; COLOR=BLACK; START:P24; END:P25;EFFECT=SHAKE TO SPLATTER; SHAKESTART=S1; SHAKEEND=S2”. Such a newdrawing stroke input command 419 generated by graphical commandgenerating module 410 may then be processed by graphical commandprocessing module 408 (e.g., modules 480, 488, and/or 490) to generateat least a portion of new drawing stroke pixel array data 499 that maypresent both portions 692 and 694 of new drawing stroke graphical object690 at the appropriate position on canvas 601 of screen 600 j of display212. It is to be understood that the above representative syntax of newdrawing stroke input command 419 for generating new drawing strokegraphical object 690 is merely representative, and that any suitablesyntax may be used by application 203 of second electronic device 200for generating a new drawing stroke input command 419 in response toreceived drawing stroke input information 411. For example, any effectthat may be selected by input options 524/624 for any suitable graphicalobject may alter that graphical object in any suitable way using anysuitable data accessible from any suitable source.

Although only starting point P24 and ending point P25 of the trail ofnew drawing stroke graphical object 690 may be defined by the exemplaryrepresentative syntax of new drawing stroke input command 419, it is tobe understood that, in other embodiments, multiple additional points ofthe path may be defined by the new drawing stroke input information 411.For example, if the new drawing stroke is a straight line (e.g., as isshown in FIG. 4J by the straight line of drawing stroke graphical object690 between starting point P24 and ending point P25), graphical commandgenerating module 410 may only define a new drawing stroke input command419 with a starting point and an ending point in order for the newdrawing stroke input command 419 to adequately instruct graphicalcommand processing module 408 to generate the appropriate path of thenew drawing stroke graphical object on canvas 601. However, if the newdrawing stroke is not a straight line (e.g., a drawing stroke thatfollows a curved or otherwise non-linear path), or if any effectdetermined by input option 624 is not static along the trail of thedrawing stroke, graphical command generating module 410 may define a newdrawing stroke input command 419 with multiple additional points alongthe path between the starting point and the ending point in order forthe new drawing stroke input command 419 to adequately instructgraphical command processing module 408 to generate the appropriate pathof the new drawing stroke graphical object with the appropriate effecton canvas 601.

In some embodiments, rather than generating a single new drawing strokeinput command 419 for a new drawing stroke graphical object to begenerated on canvas 601, graphical command generating module 410 maygenerate multiple new drawing stroke input commands 419, each of whichmay adequately instruct graphical command processing module 408 togenerate a particular portion of the new drawing stroke graphical objecton canvas 601. For example, as shown in FIG. 4J, the trail path ofdrawing stroke graphical object 690 may be defined by starting pointP24, ending point P25, and an intermediate point P26, such thatgraphical command generating module 410 may generate two drawing strokegraphical object input commands 419. Moreover, as shown in FIG. 4J, thesplatter distance of drawing stroke graphical object 690 may extend afirst splatter distance S1 along the portion of the trail between pointsP24 and P26, and a second splatter distance S2 along the portion of thetrail between points P26 and P25. The first of such two drawing strokegraphical object input commands 419 for defining drawing strokegraphical object 690 may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE; STYLE=PAINTBRUSH; COLOR=BLACK; START:P24; END:P26; EFFECT=SHAKE TO SPLATTER;SHAKESTART=S1; SHAKEEND=S1”, while the second of such two drawing strokegraphical object input commands 419 for defining drawing strokegraphical object 690 may have the following representative syntax:“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE; STYLE=PAINTBRUSH; COLOR=BLACK; START:P26; END:P25; EFFECT=SHAKE TO SPLATTER;SHAKESTART=S2; SHAKEEND=S2”. Each one of these two drawing stroke inputcommands 419 generated by graphical command generating module 410 may beprocessed by graphical command processing module 408 to generate atleast a portion of new drawing stroke pixel array data 499 that maypresent new drawing stroke graphical object 690 at the appropriateposition on canvas 601 of screen 600 j of display 212.

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, at least somegraphical object input commands 419 generated by graphical commandgenerating module 410 may be provided to communications circuitry 206 ofsecond electronic device 200 as shared graphical object input commands459. Continuing with the example of FIG. 4J, based on the selectedproperties of options 620, 622, and 624, points P24-P26 of the trailpath, and the splatter distance(s) along the trail path defined by inputinformation 411 received by second electronic device 200, graphicalcommand generating module 410 may generate at least two new drawingstroke graphical object input commands 419 that not only may be receivedand processed by pixel array generating module 480 to generate at leasta portion of new drawing stroke pixel array data 485 that may presentnew drawing stroke graphical object 690 at the appropriate position oncanvas 601 of screen 600 j of display 212, but that also may be receivedand processed by graphical command sharing module 450. Graphical commandsharing module 450 may pass on the new drawing stroke graphical objectinput commands 419 as shared new drawing stroke graphical object inputcommands 459 to communications circuitry 206, which may provide sharednew drawing stroke graphical object input commands 459 to graphicaldisplay system 301 of first device 100 (e.g., as received new drawingstroke graphical object input commands 361) to generate new drawingstroke pixel array data 389 that may present a new drawing strokegraphical object 590 at the appropriate position on canvas 501 of screen500 j of display 112.

Such received new drawing stroke graphical object input commands 361 maybe received by pixel array requesting module 360 of graphical displaysystem 301 of first device 100. For example, pixel array requestingmodule 360 may process the received new drawing stroke graphical objectinput commands 361 and may pass those received new drawing strokegraphical object input commands 361 on to pixel array generating module380, such that at least a portion of new drawing stroke pixel array data399 may be generated to present at least a portion of a new drawingstroke graphical object 590 at the appropriate position on canvas 501 ofscreen 500 j of display 112.

In some embodiments, first electronic device 100 may not be providedwith a sensor 114 and, therefore, may not be provided with the abilityto allow a user to interact with first device 100 to generateappropriate splatter distance data (e.g., as described above withrespect to splatter distances S1 and S2 generated by the interaction ofa user of second device 200 with sensor 214 of second device 200).Although such a lack of a sensor 114 may prevent a user of firstelectronic device 100 from generating one or more drawing stroke inputcommands 319 similar to drawing stroke commands 419 described above thatmay indicate splatter distance data, such a lack of a sensor 114 may notprevent first electronic device 100 from receiving and processing suchdrawing stroke commands 419 (e.g., as received new drawing strokegraphical object input commands 361) that indicate splatter distancedata for generating new drawing stroke graphical object 590 on display112.

Alternatively, rather than a user interacting with second device 200 forgenerating new drawing stroke input information 411 to define newdrawing stroke graphical object 690 on canvas 601 and then sharinggraphical input commands with first device 100 to create new drawingstroke graphical object 590 on canvas 501, a user may instead interactwith first device 100 for generating new drawing stroke inputinformation 311 to define at least a portion of new drawing strokegraphical object 590 on canvas 501. For example, even in suchembodiments where first electronic device 100 may not be provided with asensor 114 configured to allow a user to interact with first device 100to generate appropriate splatter distance data (e.g., as described abovewith respect to splatter distances S1 and S2 generated by theinteraction of a user of second device 200 with sensor 214 of seconddevice 200), a user may interact with first device 100 to define atleast some of the new drawing stroke input information 311 for definingnew drawing stroke graphical object 590/690 on canvases 501/601 ofartwork 11.

Once options 512/612, 520/620, 522/622, and 524/624 of menus 510/610have been selected and synchronized for creating a drawing strokegraphical object (e.g., with a paint brush drawing stroke input tool ofa particular color and a “shake to splatter” effect), a user may theninteract with first device 100 to define at least a portion of a newdrawing stroke graphical object in artwork 11 according to the selectedoptions. For example, when a user interacts with first device 100, basedon any appropriate drawing stroke graphical object input information311, which may be generated by the user (e.g., using input component 110and/or input component 110 a) and/or any application running on device100 (e.g., application 103), graphical input command generating module310 may be configured to define and generate at least one new drawingstroke graphical object input command 319. This new drawing strokegraphical object input command 319 may then be processed by pixel arraygenerating module 380, and eventually by active display generatingmodule 390 as new active drawing stroke graphical object pixel arraydata 399 for presentation on display 112.

For example, a user may interact with graphical display system 301 togenerate a portion of new drawing stroke graphical object 590 in artwork11 on canvas 501 (e.g., the portion of new drawing stroke graphicalobject 590 that may be independent from the portion defined by splatterdistance data). As shown in FIG. 4J, for example, drawing strokegraphical object 590 may include a straight uniform paint brush strokebody portion 592 extending along a trail path from a starting point P24on canvas 501 to an ending point P25 on canvas 501, via point P26, withthe selected drawing stroke properties of options 520, 522, and 524. Forexample, in response to a user defining a trail path for a new drawingstroke graphical object (e.g., by dragging a cursor along canvas 501from point P24, via point P26, to point P25 with mouse input component110), graphical input command generating module 310 may receive certaindrawing stroke input information 311 and then generate a particulardrawing stroke input command 319. This particular drawing stroke inputcommand 319 may be received by processing module 308 of graphicaldisplay system 301 to generate straight uniform paint brush stroke bodyportion 592 of new drawing stroke graphical object 590 on display 112.

As mentioned, the selected “shake to splatter” input effect may adjustthe distance that additional drawing stroke graphical object data may bestamped away from the body portion of the stamped trail of the paintbrush input tool. For example, as shown in FIG. 4J, drawing strokegraphical object 590 may also include a splatter portion 594, which mayextend a first splatter distance S1 along and away from a first portionof body portion 592 (e.g., adjacent point P24) and that may extend asecond splatter distance S2 along and away from another portion of bodyportion 592 (e.g., adjacent point P25). The splatter distance ofsplatter portion 594 of drawing stroke graphical object 590 may bedetermined by any suitable data accessible to first device 100 from anysuitable source. For example, in some embodiments, splatter distance ofsplatter portion 594 may be determined by a detected magnitude of aparticular movement of second device 200 at a particular time (e.g., asa user of device 100 may define body portion 592 of new drawing strokegraphical object 590 by dragging a cursor along canvas 501 from pointP24 to point P25 with mouse input component 110, the same or anotheruser may interact with device 200 to define one or more suitablesplatter distances by shaking device 200 (e.g., as may be detected bysensor 214)). Therefore, a user may interact with first device 100 todefine a first portion of a new graphical object while the same user ora different user may concurrently interact with second device 200 todefine another portion of the new graphical object. This may allow auser of first device 100 to leverage the ease with which a mouse inputcomponent 110 of device 100 may define a trail or body portion of thenew drawing stroke graphical object along canvas 501 while a user ofsecond device 200 may leverage the ease with which portable device 200equipped with a sensor 214 may be shaken to define one or more splatterdistances of the new drawing stroke graphical object.

For example, based on the selected properties of options 520, 522, and524 of device 100, and based on the trail path defined by points P24,P26, and P25 defined by input information 311, graphical commandgenerating module 310 may generate a single new drawing stroke graphicalobject input command 319, which may have the following representativesyntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE;STYLE=PAINT BRUSH; COLOR=BLACK; START:P24; END:P25; EFFECT=SHAKE TOSPLATTER; SHAKESTART=<UNKNOWN>; SHAKEEND=<UNKNOWN>”, or two drawingstroke graphical object input commands 319, which may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=PAINT BRUSH; COLOR=BLACK; START:P24; END:P26;EFFECT=SHAKE TO SPLATTER; SHAKESTART=<UNKNOWN>; SHAKEEND=<UNKNOWN>” and“COMMAND: CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE; STYLE=PAINTBRUSH; COLOR=BLACK; START:P26; END:P25; EFFECT=SHAKE TO SPLATTER;SHAKESTART=<UNKNOWN>; SHAKEEND=<UNKNOWN>”. Such new drawing stroke inputcommands 319 generated by graphical command generating module 310 maythen be processed by graphical command processing module 308 (e.g.,modules 380, 388, and/or 390) to generate at least a portion of newdrawing stroke pixel array data 399 that may present at least a portionof new drawing stroke graphical object 590 at the appropriate positionon canvas 501 of screen 500 j of display 112 (e.g., body portion 592 ofnew drawing stroke graphical object 590).

As mentioned, virtual drawing space application 103 of first electronicdevice 100 may be synched with virtual drawing space application 203 ofsecond electronic device 200 such that a single work of art (e.g.artwork 11) may be presented on both first device 100 and second device200, and such that the single work of art may be collaboratively createdand/or edited through both user interactions with first device 100 anduser interactions with second device 200. Therefore, at least somegraphical object input commands 319 generated by graphical commandgenerating module 310 may be provided to communications circuitry 106 offirst electronic device 100 as shared graphical object input commands359. Continuing with the example of FIG. 4J, based on the selectedproperties of options 520, 522, and 524, and points P24-P26 of the trailpath defined by input information 311, graphical command generatingmodule 310 may generate at least two new drawing stroke graphical objectinput commands 319 that not only may be received and processed by pixelarray generating module 380 to present body portion 592 of new drawingstroke graphical object 590 at the appropriate position on canvas 501 ofscreen 500 j of display 112, but that also may be received and processedby graphical command sharing module 350. Graphical command sharingmodule 350 may pass on the new drawing stroke graphical object inputcommands 319 as shared new drawing stroke graphical object inputcommands 359 to communications circuitry 106, which may provide sharednew drawing stroke graphical object input commands 359 to graphicaldisplay system 401 of second device 200 (e.g., as received new drawingstroke graphical object input commands 461) to generate new drawingstroke pixel array data 489 that may present at least a portion of newdrawing stroke graphical object 690 at the appropriate position oncanvas 601 of screen 600 j of display 212. Such received new drawingstroke graphical object input commands 461 may be received by pixelarray requesting module 460 of graphical display system 401 of seconddevice 200. For example, pixel array requesting module 460 may processthe received new drawing stroke graphical object input commands 461 andmay pass those received new drawing stroke graphical object inputcommands 461 on to pixel array generating module 480, such that at leasta portion of new drawing stroke pixel array data 499 may be generated topresent body portion 692 of new drawing stroke graphical object 690 atthe appropriate position on canvas 601 of screen 600 j of display 212.

As mentioned, first electronic device 100 may not be provided with theability to allow a user to interact with first device 100 to generateappropriate splatter distance data, such that new drawing strokegraphical object input commands 319 generated and shared as new drawingstroke graphical object input commands 359 by first device 100, and,thus, received new drawing stroke graphical object input commands 461,may not include any known splatter distance data for the new graphicalobject (e.g., for defining splatter portion 594/694 of graphical object590/690). Regardless, system 1 may be configured such that second device200 may process such input commands and may potentially supplement suchinput commands with known splatter distance data for the new graphicalobject. For example, in addition to or as an alternative to passingreceived new drawing stroke graphical object input commands 461 on topixel array generating module 480, pixel array requesting module 460 mayprocess received new drawing stroke graphical object input commands 461and instruct graphical command sharing module 450 to share anyaccessible data that may not have been included in the received newdrawing stroke graphical object input commands 461.

For example, in response to receiving and processing a new drawingstroke graphical object input command 461 having the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=PAINT BRUSH; COLOR=BLACK; START:P24; END:P26;EFFECT=SHAKE TO SPLATTER; SHAKESTART=<UNKNOWN>; SHAKEEND=<UNKNOWN>”,pixel array requesting module 460 may instruct graphical command sharingmodule 450 with a supplemental data request command 465 to provide firstdevice 100 with any known splatter distance data that may be appropriatefor the received command 461. In some embodiments, a user of seconddevice 200 may have been shaking device 200 in order to generate certaininput information 411 that may cause input command generating module 410to generate a new drawing stroke graphical object input command 419 thatmay have the following representative syntax: “COMMAND: CLASS=GRAPHICALOBJECT INPUT; TYPE=DRAWING STROKE; STYLE=PAINT BRUSH; COLOR=BLACK;START:<UNKNOWN>; END:<UNKNOWN>; EFFECT=SHAKE TO SPLATTER; SHAKESTART=S1;SHAKEEND=S1”. In response to receiving a supplemental data requestcommand 465 from module 460 and such a new drawing stroke graphicalobject input command 419 from module 410, module 450 may be configuredto generate a new shared graphical object input command 459 that mayhave the following representative syntax: “COMMAND: CLASS=GRAPHICALOBJECT INPUT; TYPE=DRAWING STROKE; STYLE=PAINT BRUSH; COLOR=BLACK;START:P24; END:P26; EFFECT=SHAKE TO SPLATTER; SHAKESTART=S1;SHAKEEND=S1” (e.g., to combine supplemental data request command 465from module 460 and such a new drawing stroke graphical object inputcommand 419 into new shared graphical object input command 459). Such anew shared graphical object input command 459 may be received by firstdevice 100 as a received input command 361, which may be shared withpixel array generating module 380 for creating and/or updating newdrawing stroke graphical object 590 on canvas 501 with appropriatelyknown splatter distance data (e.g., for creating splatter portion 594 ofgraphical object 590).

Alternatively, in response to receiving a supplemental data requestcommand 465 from module 460 and such a new drawing stroke graphicalobject input command 419 from module 410, module 450 may be configuredto pass the new drawing stroke graphical object input command 419 on asa new shared graphical object input command 459, which may be receivedby first device 100 as a received input command 361 for creatingsplatter portion 594 of graphical object 590. Additionally oralternatively, in response to receiving a supplemental data requestcommand 465 from module 460 and such a new drawing stroke graphicalobject input command 419 from module 410, module 450 may be configuredto generate a requested supplemental data command 467 and provide such arequested supplemental data command 467 to module 460. Module 460 maythen receive such a requested supplemental data command 467 and maysupplement the received input command 461 to provide a supplementedreceived input command 461 to module 480 for creating new drawing strokegraphical object 690 on canvas 601 and/or updating body portion 692 ofnew drawing stroke graphical object 690 on canvas 601 with splatter data694. It is to be understood that graphical display system 301 may alsobe configured to generate and share supplemental data request commands365 and requested supplemental data commands 367 that may be similar tosupplemental data request commands 465 and requested supplemental datacommands 467 of graphical display system 401, and, therefore, each maynot be described independently in greater detail.

System 1 may be configured to associate an input command generated byfirst device 100 with an input command generated by second device 200 inany suitable way such that each device may process at least a portion ofeach command to generate the same single new graphical object on itsrespective canvas for artwork 11. In some embodiments, each generatedcommand may include a timestamp such that each device may synch two ormore commands with one another. For example, following the aboveexample, a new drawing stroke graphical object input command 319generated by first device 100 and shared with second device 200 may betime stamped to have the following representative syntax: “COMMAND:CLASS=GRAPHICAL OBJECT INPUT; TYPE=DRAWING STROKE; STYLE=PAINT BRUSH;COLOR=BLACK; START:P24; END:P26; EFFECT=SHAKE TO SPLATTER;SHAKESTART=<UNKNOWN>; SHAKEEND=<UNKNOWN>; TIMESTAMP=T1”, and a newdrawing stroke graphical object input command 419 generated by seconddevice 200 and shared with first device 100 may be time stamped to havethe following representative syntax: “COMMAND: CLASS=GRAPHICAL OBJECTINPUT; TYPE=DRAWING STROKE; STYLE=PAINT BRUSH; COLOR=BLACK;START:<UNKNOWN>; END:<UNKNOWN>; EFFECT=SHAKE TO SPLATTER; SHAKESTART=S1;SHAKEEND=S1; TIMESTAMP=T1”. At least based on the commands sharing thesame timestamp, or timestamps within a particular threshold time of oneanother, each device may associate the two commands for definingportions of the same new graphical object. In some embodiments, the twocommands may be combined into a single combined command and the singlecombined command may be processed for generating pixel array data.

Commands may additionally or alternatively be provided with some kind of“action identifier” attached to them. For example, two users on twodevices might be drawing strokes at the same time. The action identifierof each command may just be a distinct numerical ID. An action may beassigned an ID when it is initiated (e.g., when a mouse input isinitially clicked or a touch screen is initially touched for generatingthe command). Subsequent actions (e.g., defining additional points alonga drawing stroke trail, etc.) may include the same ID so that thereceiving device may know which graphical object to associate thecommand with. After the action is completed (e.g., after the mousebutton is released or after the finger touch is lifted), a subsequentaction may utilize a new ID. A scheme may be required to make sure thatdifferent devices don't generate the same action ID. For example, thiscould be as simple as prefixing each ID with a number based on the orderin which the device connected itself with one or more other devices.Certain actions that are “one shot” and don't require a state to bemaintained across multiple network command messages may not need toassign an action ID. For example, such one shot commands may includecolor change commands, object creation commands, and shake magnitudecommands.

In some embodiments, a user may interact with one device to generate oneor more input commands, but that device may determine that it wouldrather leverage the processing capabilities of another device thanprocess the generated commands itself. For example, a user may interactwith I/O interface 211 of second device 200 to generate a new graphicalobject input command 419 using graphical display system 401. However,rather than utilizing its own graphical command processing module 408for processing this new generated graphical object input command 419 inorder to generate the pixel array data for presenting a new graphicalobject on display 212, graphical display system 401 of second device 200may instead utilize graphical command processing module 308 of firstdevice 100 for processing this new generated graphical object inputcommand 419.

As shown in FIG. 4K, for example, a user of second electronic device 200may select drawing stroke input option 512/612 for creating a newfree-form drawing stroke in artwork 11 on canvases 501/601. Moreover,the user may interact with drawing stroke graphical object style inputoption 620 to select a drawing stroke input tool from a group of variouspre-defined drawing stroke input tools or stamps (e.g., a “pencil”drawing stroke input tool, as shown in FIG. 4K), drawing strokegraphical object color input option 622 to select a color from a groupof various pre-defined drawing stroke colors (e.g., a solid colorrepresented by “▪”, as shown in FIG. 4K), and drawing stroke graphicalobject effect input option 624 to select one or more effects to beapplied to the drawing stroke from a group of various pre-defineddrawing stroke effects (e.g., a “smudge” effect, as shown in FIG. 4K).It is to be understood that additional or alternative pre-defineddrawing stroke input tools of various other pre-defined shapes, colors,effects, and other various pre-defined drawing stroke graphical objectproperties may also be provided by submenu 523/623 of menu 510/610 whendrawing stroke input option 512/612 is selected.

Once options 612, 620, 622, and 624 of menu 610 have been selected forcreating a drawing stroke graphical object (e.g., with a pencil drawingstroke input tool of a particular color and a “smudge” effect), a usermay then interact with second device 200 to generate one or more newdrawing stroke graphical objects in artwork 11 on both of canvases 501and 601 according to the selected options. For example, when a userinteracts with second device 200, based on any appropriate drawingstroke graphical object input information 411, which may be generated bythe user (e.g., using input component 210 and/or input component 210 a)and/or any application running on device 200 (e.g., application 203),graphical input command generating module 410 may be configured todefine and generate at least one new drawing stroke graphical objectinput command 419. However, this new drawing stroke graphical objectinput command 419 may not be processed by pixel array generating module480 for eventually generating new active drawing stroke graphical objectpixel array data 499 for presentation on display 212. Instead, for anysuitable reason, graphical display system 401 may be configured todetermine that it cannot or will not process this new drawing strokegraphical object input command 419. For example, module 480 maydetermine that second device 200 does not currently have enoughprocessing power or battery power to currently handle the processing ofthis new drawing stroke graphical object input command 419 forgenerating the associated pixel array data to be displayed on display212. As another example, second device 200 may simply not be providedwith the adequate processing capabilities to handle certain computationsthat may be associated with this new drawing stroke graphical objectinput command 419 (e.g., computations associated with a smudgingeffect).

For example, as also shown by screen 600 k of FIG. 4k , a user mayinteract with graphical display system 401 to generate a new drawingstroke graphical object 696 in artwork 11 on canvas 601. As shown,drawing stroke graphical object 696 may include a pencil strokeextending along a trail path from a starting point P27 on canvas 601 toan ending point P28 on canvas 601 with the selected drawing strokeproperties of options 620, 622, and 624. For example, in response to auser defining a trail path for a new drawing stroke graphical object(e.g., by dragging a finger along canvas 601 from point P27 to point P28with touch screen input component 210), graphical input commandgenerating module 410 may receive certain drawing stroke inputinformation 411 and then generate at least a portion of a particulardrawing stroke input command 419.

The selected “smudge” input effect may vary the opacity of the graphicalobject data that may be stamped by the pencil input tool along thestamped trail. For example, as shown in FIG. 4K, drawing strokegraphical object 696 may have a varying opacity along its trail (e.g.,graphical object 696 may get darker as it extends from point P27 topoint P28 on canvas 601). The opacity of drawing stroke graphical object696 may be determined by any suitable data accessible to second device200 from any suitable source. For example, in some embodiments, theopacity of drawing stroke graphical object 696 may be determined by adetected magnitude of pressure exerted on second device 200 at aparticular time. As just one example, as a user of device 200 may definea trail path for new drawing stroke graphical object 696 by dragging afinger along canvas 601 from point P27 to point P28 using touch screeninput component 210, the user may also vary the opacity of new drawingstroke graphical object 696 by gradually increasing the pressure theuser applies on to touch screen input component 210 with his or herfinger while it is dragged along the trail path (e.g., as may bedetected by sensor 214 or touch screen 211 itself). As shown in FIG. 4K,new drawing stroke graphical object 696 may have a smudge opacity S3 atstart point P27 and a smudge opacity S4 at end point P28 that is darkerthan smudge opacity S3.

Based on the selected properties of options 620, 622, and 624, the trailpath defined by points P27 and P28, and any received smudge data,graphical command generating module 410 may generate a new drawingstroke graphical object input command 419, which may have the followingrepresentative syntax: “COMMAND: CLASS=GRAPHICAL OBJECT INPUT;TYPE=DRAWING STROKE; STYLE=PENCIL; COLOR=BLACK; START:P27; END:P28;EFFECT=SMUDGE; SMUDGESTART=S3; SMUDGEEND=S4”. Such a new drawing strokeinput command 419 generated by graphical command generating module 410may then be provided to pixel array generating module 480 and graphicalcommand sharing module 450. However, this new drawing stroke graphicalobject input command 419 may not be processed by pixel array generatingmodule 480 for eventually generating new active drawing stroke graphicalobject pixel array data 499 for presentation on display 212. Instead,for any suitable reason, module 450 and/or 480, or any other suitableportion of system 401 may be configured to determine that system 401cannot or will not process at least a portion of this new drawing strokegraphical object input command 419.

Based on such a determination, not only may graphical command sharingmodule 450 be configured to provide this new drawing stroke graphicalobject input command 419 as shared new drawing stroke graphical objectinput command 459 to first device 100 (e.g., as received new drawingstroke graphical object input command 361, such that first device maygenerate the appropriate pixel array data 399 for presenting a newdrawing stroke graphical object 596 on canvas 501), but graphicalcommand sharing module 450 may also be configured to generate arequested supplemental data command 467 to pixel array sharing module460. Such a requested supplemental data command 467 may instruct pixelarray sharing module 460 to request at least a portion of the pixelarray data generated by first device 100 in response to receiving thenew drawing stroke graphical object input command 419 (e.g., as receivednew drawing stroke graphical object input command 361). This requestedpixel array data may be received by second device 200 and provided as atleast a portion of canvas 601. Therefore, second device 200 may leveragethe processing capabilities of first device 100 to receive the pixelarray data for a graphical object defined by an input command originallygenerated by second device 200.

Although system 1 is only shown to include two electronic devices inFIGS. 1-4K, it is to be understood that system 1 may include three ormore electronic devices, each of which may communicate with one anotherto collaborate on a single work of art. The network architecture ofsystem 1 may be configured in many suitable ways. For example, in someembodiments, when a user interacts with a particular device to generatean input command, that device may broadcast the new input command to allof the synched devices within system 1 it is collaborating with (e.g.,system 1 may be decentralized). In another embodiment, when a userinteracts with a particular device to generate an input command, thatdevice may share the new input command to a particular “master” devicewithin system 1, and that master device may then share the receivedinput command with any other synched devices within system 1. Such aconfiguration may reduce the number of communication channels betweendevices and bandwidth in the system but may increase the latency. Insome embodiments, more than one outline may be provided over a canvas ofa particular device, such that the current actively displayed portion ofa shared artwork on two different devices may be identified on theartwork of a third device.

FIG. 5 is a flowchart of an illustrative process 700 for sharinggraphical data. Process 700 may begin at step 702 by receiving firstuser instructions with a first user interface of a first electronicdevice. For example, as described with respect to FIG. 4B, first device100 of system 1 may receive input information 303 from a userinteracting with input component 110 of first device 100. Next, at step704, process 700 may include generating a first input command based onthe received first user instructions with a first graphics applicationon the first device. For example, graphics application 103 of firstdevice 100 may generate an input command 305 (e.g., with graphicalcommand generating module 304 of graphical display system 301) based onreceived input information 303.

Then, at step 706, process 700 may include transmitting the first inputcommand from the first electronic device to a second electronic device.For example, graphical display system 301 of first device 100 maytransmit input command 305 as shared input command 305 s to seconddevice 200, which may be received as received input command 405 r.Process 700 may also include step 708 for processing the first inputcommand with the first graphics application on the first device togenerate first pixel array data in a first canvas of the first device.As shown in screen 500 b of FIG. 4B, for example, application 103 offirst device 100 may process input command 305 to generate pixel arraydata 309 (e.g., as drawing stroke graphical object 530) in canvas 501 offirst device 100. In some embodiments, process 700 may also include step710 for processing the first input command with a second graphicsapplication on the second device to generate second pixel array data ina second canvas of the second device. As shown in screen 600 b of FIG.4B, for example, application 203 of second device 200 may processreceived input command 405 r to generate pixel array data 409 (e.g., asdrawing stroke graphical object 630) in canvas 601 of second device 200.

In some embodiments, the first input command does not include pixelarray data. In some embodiments the size of the first pixel array datamay be larger than the size of the first input command. For example, thebandwidth required by communications media 55 to share the first pixelarray data between first device 100 and second device 200 may be greaterthan the bandwidth required by communications media 55 to share thefirst input command between first device 100 and second device 200.

In some embodiments, at least a portion of the transmitting of step 706may occur at the same time as at least a portion of the processing ofthe first input command with the first graphics application of step 708.For example, graphical display system 301 may be configured to transmitat least a portion of shared input command 305 s at the same time asgraphical display system 301 may be configured to process at least aportion of input command 305 with processing module 308. Additionally oralternatively, in some embodiments, at least a portion of the processingof the first input command with the first graphics application of step708 may occur at the same time as at least a portion of the processingof the first input command with the second graphics application of step710. For example, graphical display system 301 of first device 100 maybe configured to process at least a portion of input command 305 withprocessing module 308 at the same time as graphical display system 401of second device 200 may be configured to process at least a portion ofshared input command 305 s/received input command 405 r with processingmodule 408.

In some embodiments, the first device of process 700 may include moreprocessing capabilities than the second device. In other embodiments,the first user interface of process 700 may include touch inputcapabilities and the second user interface may not include touch inputcapabilities. For example, second device 200 may include a touch screen211 and first device 100 may only include a mouse 110 and a keyboard 110a. In some embodiments, process 700 may also include presenting at leasta portion of the first canvas on a first display of the first device andpresenting at least a portion of the second canvas on a second displayof the second device. In some embodiments, the second display may belarger than the first display (e.g., as shown in FIG. 4A).

In some embodiments, the first graphics application of process 700 andthe second graphics application may share a semantic command set.Moreover, in some embodiments of process 700, the pixel array data inthe first canvas may be the same as the pixel array data in the secondcanvas, and the pixel array data in the portion of the first canvaspresented on the first display may be different than the pixel arraydata in the portion of the second canvas presented on the seconddisplay. For example, the pixel array data of canvas 501 may be the sameas the pixel array data of canvas 601, as each canvas may include thepixel array data of shared artwork 11. However, in some embodiments,only a portion of canvas 601 may be presented on display 212 of seconddevice 200 while the entirety of canvas 501 may be presented on display112 of first device 100 (see, e.g., FIG. 4F).

In some embodiments, process 700 may also include receiving second userinstructions with a second user interface of the second device,generating a second input command based on the received second userinstructions with the second graphics application on the second device,transmitting the second input command from the second device to thefirst device, processing the second input command with the firstgraphics application on the first device to generate third pixel arraydata in the first canvas, and processing the second input command withthe second graphics application on the second device to generate fourthpixel array data in the second canvas. For example, as described withrespect to FIG. 4D, second device 200 of system 1 may receive inputinformation 403 from a user interacting with input component 210 ofsecond device 200. Then graphics application 203 of second device 200may generate an input command 405 (e.g., with graphical commandgenerating module 404 of graphical display system 401) based on receivedinput information 403. Graphical display system 401 of second device 200may transmit input command 405 as shared input command 405 s to firstdevice 100, which may be received as received input command 305 r. Asshown in screen 600 d of FIG. 4D, for example, application 203 of seconddevice 200 may process input command 405 to generate pixel array data409 (e.g., as shape graphical object 650) in canvas 601 of second device200. Moreover, as shown in screen 600 d of FIG. 4D, for example,application 103 of first device 100 may process received input command305 r to generate pixel array data 309 (e.g., as shape stroke graphicalobject 550) in canvas 501 of first device 100. In some embodiments, atleast a portion of the transmitting the first input command (e.g., ofstep 706) may occur at the same time as at least a portion of thetransmitting the second input command. Alternatively or additionally, atleast a portion of the processing of the first input command on thefirst device (e.g., of step 708) may occur at the same time as at leasta portion of the processing of the second input command on the seconddevice. Moreover, alternatively or additionally, at least a portion ofthe processing of the first input command on the first device (e.g., ofstep 708) may occur at the same time as at least a portion of theprocessing of the second input command on the first device.

It is to be understood that the steps shown in process 700 of FIG. 5 ismerely illustrative and that existing steps may be modified or omitted,additional steps may be added, and the order of certain steps may bealtered.

FIG. 5A is a flowchart of an illustrative process 720 for sharinggraphical data. Process 720 may begin at step 722 by loading a firstgraphics application on a first electronic device. For example, firstdevice 100 of system 1 may load a first graphics application 103 fromany suitable source (e.g., memory 104 or server 70). Next, at step 724,process 720 may include loading an artwork into the first graphicsapplication on the first electronic device. For example, graphicsapplication 103 of first device 100 may load artwork 11 onto canvas 501of first device 100.

Then, at step 726, process 720 may include sending first informationfrom the first electronic device to a second electronic device, wherethe first information is configured to instruct the second electronicdevice to load at least a first portion of the artwork into a secondgraphics application on the second electronic device. For example,graphical display system 301 of first device 100 may transmit firstinformation via communications media 55 to second electronic device 200that may instruct second device 200 to load at least a portion ofartwork 11 onto canvas 601 of second device 200.

In some embodiments, prior to the sending of step 726, process 700 mayinclude receiving a first instruction at the first electronic devicethat defines the first portion of the artwork. For example, suchreceiving of the first instruction may include receiving the firstinstruction at the first electronic device from a user of the firstelectronic device (e.g., a user may define an outline over a portion ofthe artwork that may be displayed by the first device). As anotherexample, such receiving of the first instruction may include receivingthe first instruction at the first electronic device from the secondelectronic device (e.g., the first instruction may be indicative of thedimensions of a canvas displayed by the second electronic device or aresolution of a display of the second electronic device).

In some embodiments, the first information of process 720 may includepixel array data. In other embodiments, the first information of process720 may include at least one graphical object input command.

It is to be understood that the steps shown in process 720 of FIG. 5A ismerely illustrative and that existing steps may be modified or omitted,additional steps may be added, and the order of certain steps may bealtered.

Moreover, the processes described with respect to FIGS. 1-5A, as well asany other aspects of the invention, may each be implemented by software,but may also be implemented in hardware, firmware, or any combination ofsoftware, hardware, and firmware. They each may also be embodied asmachine- or computer-readable code recorded on a machine- orcomputer-readable medium. The computer-readable medium may be any datastorage device that can store data or instructions which can thereafterbe read by a computer system. Examples of the computer-readable mediummay include, but are not limited to, read-only memory, random-accessmemory, flash memory, CD-ROMs, DVDs, magnetic tape, and optical datastorage devices (e.g., memory 104, memory 204, and/or server 70 of FIG.1). The computer-readable medium can also be distributed overnetwork-coupled computer systems so that the computer readable code isstored and executed in a distributed fashion. For example, thecomputer-readable medium may be communicated from one electronic deviceto another electronic device using any suitable communications protocol(e.g., the computer-readable medium may be communicated to electronicdevice 100 via communications circuitry 106 from server 70 and/orelectronic device 200 of FIG. 1 (e.g., as at least a portion of anapplication 103 and/or 203)). The computer-readable medium may embodycomputer-readable code, instructions, data structures, program modules,or other data in a modulated data signal, such as a carrier wave orother transport mechanism, and may include any information deliverymedia. A modulated data signal may be a signal that has one or more ofits characteristics set or changed in such a manner as to encodeinformation in the signal.

It is to be understood that any or each module of either one or both ofgraphical display system 301 and graphical display system 401 may beprovided as a software construct, firmware construct, one or morehardware components, or a combination thereof. For example, either oneor both of graphical display system 301 and graphical display system 401may be described in the general context of computer-executableinstructions, such as program modules, that may be executed by one ormore computers or other devices. Generally, a program module may includeone or more routines, programs, objects, components, and/or datastructures that may perform one or more particular tasks or that mayimplement one or more particular abstract data types. It is also to beunderstood that the number, configuration, functionality, andinterconnection of the modules of either one or both of graphicaldisplay system 301 and graphical display system 401 are merelyillustrative, and that the number, configuration, functionality, andinterconnection of existing modules may be modified or omitted,additional modules may be added, and the interconnection of certainmodules may be altered.

At least a portion of one or more of the modules of either one or bothof graphical display system 301 and graphical display system 401 may bestored in or otherwise accessible to device 100 and/or device 200 in anysuitable manner (e.g., in memory 104 of device 100, in memory 204 ofdevice 200, and/or in server 70 of communications media 55 (e.g., as atleast a portion of an application 103 and/or 203)). Any or each moduleof either one or both of graphical display system 301 and graphicaldisplay system 401 may be implemented using any suitable technologies(e.g., as one or more integrated circuit devices), and different modulesmay or may not be identical in structure, capabilities, and operation.Any or all of the modules or other components of either one or both ofgraphical display system 301 and graphical display system 401 may bemounted on an expansion card, mounted directly on a system motherboard,or integrated into a system chipset component (e.g., into a “northbridge” chip). Either one or both of graphical display system 301 andgraphical display system 401 may include any amount of dedicatedgraphics memory, may include no dedicated graphics memory and may relyon device memory (e.g., memory 104 and/or memory 204) or network memory(e.g., memory of server 70), or may use any combination thereof.

Either one or both of graphical display system 301 and graphical displaysystem 401 may be a dedicated system implemented using one or moreexpansion cards adapted for various bus standards. For example, all ofthe modules may be mounted on different interconnected expansion cardsor all of the modules may be mounted on one expansion card. With respectto graphical display system 301, by way of example only, the modules ofsystem 301 may interface with a motherboard or processor 102 of device100 through an expansion slot (e.g., a peripheral component interconnect(“PCI”) slot or a PCI express slot). Alternatively, system 301 need notbe removable but may include one or more dedicated modules that mayinclude memory (e.g., RAM) dedicated to the utilization of the module.In other embodiments, system 301 may be a graphics system integratedinto device 100. For example, a module of system 301 may utilize aportion of device memory 104 of device 100. One or more of the modulesof graphical display system 301 may include its own processing circuitryand/or memory. Alternatively each module of graphical display system 301may share processing circuitry and/or memory with any other module ofgraphical display system 301 and/or processor 102 and/or memory 104 ofdevice 100. Similar configurations may be provided for graphical displaysystem 401 with respect to device 200.

One or more Application Programming Interfaces (“APIs”) may be used insome embodiments (e.g., with respect to graphical display system 301,graphical display system 401, or any other suitable module or any othersuitable portion of any suitable module of graphical display system 301and/or graphical display system 401 of FIGS. 2-3B). An API may be aninterface implemented by a program code component or hardware component(hereinafter “API-implementing component”) that may allow a differentprogram code component or hardware component (hereinafter “API-callingcomponent”) to access and use one or more functions, methods,procedures, data structures, classes, and/or other services provided bythe API-implementing component. An API can define one or more parametersthat may be passed between the API-calling component and theAPI-implementing component.

An API may allow a developer of an API-calling component, which may be athird party developer, to leverage specified features provided by anAPI-implementing component. There may be one API-calling component orthere may be more than one such component. An API can be a source codeinterface that a computer system or program library may provide in orderto support requests for services from an application. An operatingsystem (“OS”) can have multiple APIs to allow applications running onthe OS to call one or more of those APIs, and a service (e.g., a programlibrary) can have multiple APIs to allow an application that uses theservice to call one or more of those APIs. An API can be specified interms of a programming language that can be interpreted or compiled whenan application is built.

In some embodiments, the API-implementing component may provide morethan one API, each providing a different view of or with differentaspects that access different aspects of the functionality implementedby the API-implementing component. For example, one API of anAPI-implementing component can provide a first set of functions and canbe exposed to third party developers, and another API of theAPI-implementing component can be hidden (e.g., not exposed) and canprovide a subset of the first set of functions and can also provideanother set of functions, such as testing or debugging functions whichare not in the first set of functions. In other embodiments, theAPI-implementing component may itself call one or more other componentsvia an underlying API and may thus be both an API-calling component andan API-implementing component.

An API may define the language and parameters that API-callingcomponents may use when accessing and using specified features of theAPI-implementing component. For example, an API-calling component mayaccess the specified features of the API-implementing component throughone or more API calls or invocations (e.g., embodied by function ormethod calls) exposed by the API and may pass data and controlinformation using parameters via the API calls or invocations. TheAPI-implementing component may return a value through the API inresponse to an API call from an API-calling component. While the API maydefines the syntax and result of an API call (e.g., how to invoke theAPI call and what the API call does), the API may not reveal how the APIcall accomplishes the function specified by the API call. Various APIcalls may be transferred via the one or more application programminginterfaces between the calling component (e.g., API-calling component)and an API-implementing component. Transferring the API calls mayinclude issuing, initiating, invoking, calling, receiving, returning, orresponding to the function calls or messages. Thus, transferring candescribe actions by either of the API-calling component or theAPI-implementing component. The function calls or other invocations ofthe API may send or receive one or more parameters through a parameterlist or other structure. A parameter can be a constant, key, datastructure, object, object class, variable, data type, pointer, array,list, or a pointer to a function or method or another way to reference adata or other item to be passed via the API.

Furthermore, data types or classes may be provided by the API andimplemented by the API-implementing component. Thus, the API-callingcomponent may declare variables, use pointers to, use or instantiateconstant values of such types or classes by using definitions providedin the API.

Generally, an API can be used to access a service or data provided bythe API-implementing component or to initiate performance of anoperation or computation provided by the API-implementing component. Byway of example, the API-implementing component and the API-callingcomponent may each be any one of an operating system, a library, adevice driver, an API, an application program, or other module. Itshould be understood that the API-implementing component and theAPI-calling component may be the same or different type of module fromeach other. API-implementing components may in some cases be embodied atleast in part in firmware, microcode, or other hardware logic. In someembodiments, an API may allow a client program to use the servicesprovided by a Software Development Kit (“SDK”) library. In otherembodiments, an application or other client program may use an APIprovided by an Application Framework. In such embodiments, theapplication or client program may incorporate calls to functions ormethods provided by the SDK and provided by the API or may use datatypes or objects defined in the SDK and provided by the API. AnApplication Framework may, in these embodiments, provide a main eventloop for a program that responds to various events defined by theFramework. The API may allow the application to specify the events andthe responses to the events using the Application Framework. In someimplementations, an API call can report to an application thecapabilities or state of a hardware device, including those related toaspects such as input capabilities and state, output capabilities andstate, processing capability, power state, storage capacity and state,communications capability, and the like, and the API may be implementedin part by firmware, microcode, or other low level logic that mayexecute in part on the hardware component.

The API-calling component may be a local component (i.e., on the samedata processing system as the API-implementing component) or a remotecomponent (i.e., on a different data processing system from theAPI-implementing component) that may communicate with theAPI-implementing component through the API over a network. It should beunderstood that an API-implementing component may also act as anAPI-calling component (i.e., it may make API calls to an API exposed bya different API-implementing component) and an API-calling component mayalso act as an API-implementing component by implementing an API thatmay be exposed to a different API-calling component.

The API may allow multiple API-calling components written in differentprogramming languages to communicate with the API-implementingcomponent, such that the API may include features for translating callsand returns between the API-implementing component and the API-callingcomponent. However, the API may be implemented in terms of a specificprogramming language. An API-calling component can, in some embodiments,call APIs from different providers, such as a set of APIs from an OSprovider and another set of APIs from a plug-in provider and another setof APIs from another provider (e.g., the provider of a software library)or creator of the another set of APIs.

FIG. 6 is a block diagram illustrating an exemplary API architecture800, which may be used in some embodiments of the invention. As shown inFIG. 6, the API architecture 800 may include an API-implementingcomponent 810 (e.g., an operating system, a library, a device driver, anAPI, an application program, software, or other module) that mayimplements an API 820. API 820 may specify one or more functions,methods, classes, objects, protocols, data structures, formats, and/orother features of API-implementing component 810 that may be used by anAPI-calling component 830. API 820 can specify at least one callingconvention that may specify how a function in API-implementing component810 may receive parameters from API-calling component 830 and how thefunction may return a result to API-calling component 830. API-callingcomponent 830 (e.g., an operating system, a library, a device driver, anAPI, an application program, software, or other module), may make APIcalls through API 820 to access and use the features of API-implementingcomponent 810 that may be specified by API 820. API-implementingcomponent 810 may return a value through API 820 to API-callingcomponent 830 in response to an API call.

It is to be appreciated that API-implementing component 810 may includeadditional functions, methods, classes, data structures, and/or otherfeatures that may not be specified through API 820 and that may not beavailable to API-calling component 830. It is to be understood thatAPI-calling component 830 may be on the same system as API-implementingcomponent 810 or may be located remotely and may access API-implementingcomponent 810 using API 820 over a network. While FIG. 6 illustrates asingle API-calling component 830 interacting with API 820, it is to beunderstood that other API-calling components, which may be written indifferent languages than, or the same language as, API-calling component830, may use API 820.

API-implementing component 810, API 820, and API-calling component 830may each be implemented by software, but may also be implemented inhardware, firmware, or any combination of software, hardware, andfirmware. They each may also be embodied as machine- orcomputer-readable code recorded on a machine- or computer-readablemedium. The computer-readable medium may be any data storage device thatcan store data or instructions which can thereafter be read by acomputer system. Examples of the computer-readable medium may include,but are not limited to, read-only memory, random-access memory, flashmemory, CD-ROMs, DVDs, magnetic tape, and optical data storage devices(e.g., memory 104, memory 204, and/or server 70 of FIG. 1). Thecomputer-readable medium can also be distributed over network-coupledcomputer systems so that the computer readable code is stored andexecuted in a distributed fashion. For example, the computer-readablemedium may be communicated from one electronic device to anotherelectronic device using any suitable communications protocol (e.g., thecomputer-readable medium may be communicated to electronic device 100via communications circuitry 106 from server 70 and/or electronic device200 of FIG. 1). The computer-readable medium may embodycomputer-readable code, instructions, data structures, program modules,or other data in a modulated data signal, such as a carrier wave orother transport mechanism, and may include any information deliverymedia. A modulated data signal may be a signal that has one or more ofits characteristics set or changed in such a manner as to encodeinformation in the signal.

FIG. 7 is a block diagram illustrating an exemplary software stack 900,which may be used in some embodiments of the invention. As shown in FIG.7, Application A 901 and Application B 909 can make calls to Service A921 or Service B 929 using several Service APIs (e.g., Service APIs 913,915, and 917) and to Operating System (“OS”) 940 using several OS APIs(e.g., OS APIs 933 and 937). Service A 921 and Service B 929 can makecalls to OS 940 using several OS APIs (e.g., OS APIs 933 and 937).

For example, as shown in FIG. 7, Service B 929 may include two APIs, oneof which (i.e., Service B API-1 915) may receive calls from and returnvalues to Application A 901 and the other of which (i.e., Service BAPI-2 917) may receive calls from and return values to Application B909. Service A 921, which can be, for example, a software library, maymake calls to and receive returned values from OS API-1 933, and ServiceB 929, which can be, for example, a software library, may make calls toand receive returned values from both OS API-1 933 and OS API-2 937.Application B 909 may make calls to and receive returned values from OSAPI-2 937.

As mentioned, an input component 210 of device 200 may include a touchinput component that can receive touch input for interacting with othercomponents of device 200 via wired or wireless bus 216. Such a touchinput component 210 may be used to provide user input to device 200 inlieu of or in combination with other input components, such as akeyboard, mouse, and the like. One or more touch input components may beused for providing user input to device 200. Although the followingdescribes various touch input components 210 that may be used forproviding user input to device 200 (e.g., in conjunction with display212 and/or I/O component 211), the same description may additionally oralternatively be applied to various touch input components 110 that maybe used for providing user input to device 100 (e.g., in conjunctionwith display 112 and/or I/O component 111).

A touch input component 210 may include a touch sensitive panel, whichmay be wholly or partially transparent, semitransparent,non-transparent, opaque, or any combination thereof. A touch inputcomponent 210 may be embodied as a touch screen, touch pad, a touchscreen functioning as a touch pad (e.g., a touch screen replacing thetouchpad of a laptop), a touch screen or touch pad combined orincorporated with any other input device (e.g., a touch screen or touchpad disposed on a keyboard), or any multi-dimensional object having atouch sensitive surface for receiving touch input. In some embodiments,the terms touch screen and touch pad may be used interchangeably.

In some embodiments, a touch input component 210 embodied as a touchscreen may include a transparent and/or semitransparent touch sensitivepanel partially or wholly positioned over, under, and/or within at leasta portion of a display (e.g., display 212). In other embodiments, atouch input component 210 may be embodied as an integrated touch screenwhere touch sensitive components/devices are integral with displaycomponents/devices. In still other embodiments, a touch input component210 may be used as a supplemental or additional display screen fordisplaying supplemental or the same graphical data as a primary displayand to receive touch input.

A touch input component 210 may be configured to detect the location ofone or more touches or near touches based on capacitive, resistive,optical, acoustic, inductive, mechanical, chemical measurements, or anyphenomena that can be measured with respect to the occurrences of theone or more touches or near touches in proximity to input component 210.Software, hardware, firmware, or any combination thereof may be used toprocess the measurements of the detected touches to identify and trackone or more gestures. A gesture may correspond to stationary ornon-stationary, single or multiple, touches or near touches on a touchinput component 210. A gesture may be performed by moving one or morefingers or other objects in a particular manner on touch input component210, such as by tapping, pressing, rocking, scrubbing, rotating,twisting, changing orientation, pressing with varying pressure, and thelike at essentially the same time, contiguously, or consecutively. Agesture may be characterized by, but is not limited to, a pinching,pulling, sliding, swiping, rotating, flexing, dragging, or tappingmotion between or with any other finger or fingers. A single gesture maybe performed with one or more hands, by one or more users, or anycombination thereof.

As mentioned, electronic device 200 may drive a display (e.g., display212) with graphical data to display a graphical user interface (“GUI”).The GUI may be configured to receive touch input via a touch inputcomponent 210. Embodied as a touch screen (e.g., with display 212 as I/Ocomponent 211), touch I/O component 211 may display the GUI.Alternatively, the GUI may be displayed on a display (e.g., display 212)separate from touch input component 210. The GUI may include graphicalelements displayed at particular locations within the interface.Graphical elements may include, but are not limited to, a variety ofdisplayed virtual input devices, including virtual scroll wheels, avirtual keyboard, virtual knobs, virtual buttons, any virtual userinterface (“UI”), and the like. A user may perform gestures at one ormore particular locations on touch input component 210, which may beassociated with the graphical elements of the GUI. In other embodiments,the user may perform gestures at one or more locations that areindependent of the locations of graphical elements of the GUI. Gesturesperformed on a touch input component 210 may directly or indirectlymanipulate, control, modify, move, actuate, initiate, or generallyaffect graphical elements, such as cursors, icons, media files, lists,text, all or portions of images, or the like within the GUI. Forinstance, in the case of a touch screen, a user may directly interactwith a graphical element by performing a gesture over the graphicalelement on the touch screen. Alternatively, a touch pad may generallyprovide indirect interaction. Gestures may also affect non-displayed GUIelements (e.g., causing user interfaces to appear) or may affect otheractions of device 200 (e.g., affect a state or mode of a GUI,application, or operating system). Gestures may or may not be performedon a touch input component 210 in conjunction with a displayed cursor.For instance, in the case in which gestures are performed on a touchpad,a cursor or pointer may be displayed on a display screen or touch screenand the cursor or pointer may be controlled via touch input on thetouchpad to interact with graphical objects on the display screen. Inother embodiments, in which gestures are performed directly on a touchscreen, a user may interact directly with objects on the touch screen,with or without a cursor or pointer being displayed on the touch screen.In some embodiments, when input synchs 526 and 626 are selected, system1 may be configured such that a user's interactions with touch screen211 of second device 200 may interact directly with objects on touchscreen 211, without a cursor or pointer being displayed on touch screen211, but such interactions with touch screen 211 may control a cursor orpointer displayed on display 112 of first device 100.

Feedback may be provided to the user via bus 216 in response to or basedon the touch or near touches on a touch input component 210. Feedbackmay be transmitted optically, mechanically, electrically, olfactory,acoustically, or the like or any combination thereof and in a variableor non-variable manner.

While there have been described systems, methods, and computer-readablemedia for manipulating and/or mapping tiles of graphical object data, itis to be understood that many changes may be made therein withoutdeparting from the spirit and scope of the invention. Insubstantialchanges from the claimed subject matter as viewed by a person withordinary skill in the art, now known or later devised, are expresslycontemplated as being equivalently within the scope of the claims.Therefore, obvious substitutions now or later known to one with ordinaryskill in the art are defined to be within the scope of the definedelements. It is also to be understood that various directional andorientational terms such as “up” and “down,” “top” and “bottom,” “left”and “right,” “length” and “width,” “horizontal” and “vertical” and“diagonal,” and the like are used herein only for convenience, and thatno fixed or absolute directional or orientational limitations areintended by the use of these words. For example, the devices of thisinvention can have any desired orientation. If reoriented, differentdirectional or orientational terms may need to be used in theirdescription, but that will not alter their fundamental nature as withinthe scope and spirit of this invention.

Therefore, those skilled in the art will appreciate that the inventioncan be practiced by other than the described embodiments, which arepresented for purposes of illustration rather than of limitation.

What is claimed is:
 1. A method, comprising: at a first electronicdevice that includes one or more input components configured to detectpressure of contacts with a touch-sensitive surface, a first processor,and memory storing instructions for execution by the first processor:detecting a contact on the touch-sensitive surface; and, in response todetecting the contact on the touch-sensitive surface: determining apressure of the contact on the touch-sensitive surface; generating afirst input command based on the pressure of the contact on thetouch-sensitive surface, wherein the first input command includes acommand selected from a predefined set of commands; processing the firstinput command with a first set of instructions on the first electronicdevice to update a display of the first electronic device; andtransmitting the first input command from the first electronic device toa second electronic device, that is distinct from the first electronicdevice and includes a display, a second processor distinct from thefirst processor and memory storing instructions for execution by thesecond processor, for processing on the second electronic device so thatthe transmitted first input command is processed with a second set ofinstructions on the second electronic device to update the display ofthe second electronic device, wherein the first set of instructions isdistinct from the second set of instructions; wherein the update to thedisplay of the second electronic device corresponds to the update to thedisplay of the first electronic device; and the update to the display ofthe second electronic device changes graphical information on thedisplay of the second electronic device in accordance with the pressureof the contact on the touch sensitive surface, and the update to thefirst electronic device changes graphical information on the display ofthe first electronic device in accordance with the pressure of thecontact on the touch sensitive surface.
 2. The method of claim 1,wherein the first input command is processed with the first set ofinstructions on the first electronic device to output tactileinformation.
 3. The method of claim 2, wherein the first electronicdevice includes one or more vibrators to output the tactile information.4. The method of claim 1, including: processing the first input commandwith the second set of instructions on the second electronic device togenerate pixel array data for display on the display of the secondelectronic device.
 5. The method of claim 4, wherein the first inputcommand is processed with the second set of instructions on the secondelectronic device to determine an opacity of a graphical object on thedisplay of the second electronic device.
 6. The method of claim 4,wherein the first input command does not comprise pixel array data. 7.The method of claim 1, wherein the touch-sensitive surface is a touchpad.
 8. The method of claim 1, wherein the touch-sensitive surface is atouch screen.
 9. The method of claim 1, wherein at least a portion ofthe processing of the first input command with the first set ofinstructions occurs at the same time as at least a portion of theprocessing of the first input command with the second set ofinstructions.
 10. The method of claim 1, further comprising: processingthe first input command with the second set of instructions on thesecond electronic device; generating a second input command with thesecond set of instructions on the second electronic device based on theprocessing of the first input command with the second set ofinstructions, the second input command including a command selected fromthe predefined set of commands; and transmitting the second inputcommand from the second electronic device to the first electronic devicefor processing, wherein the second input command is configured toinstruct the first electronic device to transmit additional data to thesecond electronic device.
 11. The method of claim 1, wherein the firstelectronic device and second electronic device are configured to processthe first input command in a consistent manner.
 12. The method of claim1, wherein the generating includes generating the first input commandbased on a gesture input using the contact on the touch-sensitivesurface and the pressure of the contact on the touch-sensitive surface.13. A first electronic device, comprising: one or more input componentsconfigured to detect pressure of contacts with a touch-sensitivesurface; a first processor; and memory storing instructions forexecution by the first processor, wherein the stored instructions, whenexecuted by the first processor, cause the first electronic device to:detect a contact on the touch-sensitive surface; and, in response todetecting the contact on the touch-sensitive surface: determine apressure of the contact on the touch-sensitive surface; generate a firstinput command based on the pressure of the contact on thetouch-sensitive surface, wherein the first input command includes acommand selected from a predefined set of commands; process the firstinput command with a first set of instructions on the first electronicdevice to update a display of the first electronic device; and transmitthe first input command from the first electronic device to a secondelectronic device, that is distinct from the first electronic device andincludes a display, a second processor distinct from the first processorand memory storing instructions for execution by the second processor,for processing on the second electronic device so that the transmittedfirst input command is processed with a second set of instructions onthe second electronic device to update the display of the secondelectronic device, wherein the first set of instructions is distinctfrom the second set of instructions; wherein the update to the displayof the second electronic device corresponds to the update to the displayof the first electronic device; and the update to the display of thesecond electronic device changes graphical information on the display ofthe second electronic device in accordance with the pressure of thecontact on the touch sensitive surface, and the update to the firstelectronic device changes graphical information on the display of thefirst electronic device in accordance with the pressure of the contacton the touch sensitive surface.
 14. The first electronic device of claim13, wherein the first input command is processed with the first set ofinstructions on the first electronic device to output tactileinformation.
 15. The first electronic device of claim 14, including oneor more vibrators to output the tactile information.
 16. The firstelectronic device of claim 13, including a display, wherein the firstset of instructions, when executed by the first processor, cause thefirst electronic device to process the first input command to generatepixel array data for display on the display of the first electronicdevice.
 17. The first electronic device of claim 16, wherein the firstset of instructions, when executed by the first processor, cause thefirst electronic device to determine an opacity of a graphical object onthe display of the first electronic device.
 18. The first electronicdevice of claim 16, wherein the first input command does not comprisepixel array data.
 19. The first electronic device of claim 13, whereinthe touch-sensitive surface is a touch pad.
 20. The first electronicdevice of claim 13, wherein the touch-sensitive surface is a touchscreen.
 21. The first electronic device of claim 13, wherein at least aportion of the processing of the first input command with the first setof instructions occurs at the same time as at least a portion of theprocessing of the first input command with the second set ofinstructions.
 22. The first electronic device of claim 13, wherein thefirst electronic device and second electronic device are configured toprocess the first input command in a consistent manner.
 23. The firstelectronic device of claim 13, wherein the first input command isgenerated based on a gesture input using the contact on thetouch-sensitive surface and the pressure of the contact on thetouch-sensitive surface.
 24. A non-transitory computer readable mediumstoring instructions for execution by a first processor of a firstelectronic device that includes one or more input components configuredto detect pressure of contacts with a touch-sensitive surface, and thefirst processor; wherein execution of the instructions by the firstprocessor causes the first electronic device to: detect a contact on thetouch-sensitive surface; and, in response to detecting the contact onthe touch-sensitive surface: determine a pressure of the contact on thetouch-sensitive surface; generate a first input command based on thepressure of the contact on the touch-sensitive surface, wherein thefirst input command includes a command selected from a predefined set ofcommands; process the first input command with a first set ofinstructions on the first electronic device to update a display of thefirst electronic device; and transmit the first input command from thefirst electronic device to a second electronic device, that is distinctfrom the first electronic device and includes a display, a secondprocessor distinct from the first processor and memory storinginstructions for execution by the second processor, for processing onthe second electronic device so that the transmitted first input commandis processed with a second set of instructions on the second electronicdevice to update the display of the second electronic device, whereinthe first set of instructions is distinct from the second set ofinstructions; wherein the update to the display of the second electronicdevice corresponds to the update to the display of the first electronicdevice; and the update to the display of the second electronic devicechanges graphical information on the display of the second electronicdevice in accordance with the pressure of the contact on the touchsensitive surface, and the update to the first electronic device changesgraphical information on the display of the first electronic device inaccordance with the pressure of the contact on the touch sensitivesurface.
 25. The non-transitory computer readable medium of claim 24,wherein the first electronic device and second electronic device areconfigured to process the first input command in a consistent manner.26. The non-transitory computer readable medium of claim 24, wherein thefirst input command is generated based on a gesture input using thecontact on the touch-sensitive surface and the pressure of the contacton the touch-sensitive surface.
 27. The non-transitory computer readablemedium of claim 24, wherein the first input command is processed withthe first set of instructions on the first electronic device to outputtactile information.
 28. The non-transitory computer readable medium ofclaim 27, wherein the first electronic device includes one or morevibrators to output the tactile information.
 29. The non-transitorycomputer readable medium of claim 24, wherein the first electronicdevice includes a display and the first set of instructions, whenexecuted by the first processor, cause the first electronic device toprocess the first input command to generate pixel array data for displayon the display of the first electronic device.
 30. The non-transitorycomputer readable medium of claim 29, wherein the first set ofinstructions, when executed by the first processor, cause the firstelectronic device to determine an opacity of a graphical object on thedisplay of the first electronic device.
 31. The non-transitory computerreadable medium of claim 29, wherein the first input command does notcomprise pixel array data.
 32. The non-transitory computer readablemedium of claim 24, wherein the touch-sensitive surface is a touch pad.33. The non-transitory computer readable medium of claim 24, wherein thetouch-sensitive surface is a touch screen.
 34. The non-transitorycomputer readable medium of claim 24, wherein at least a portion of theprocessing of the first input command with the first set of instructionsoccurs at the same time as at least a portion of the processing of thefirst input command with the second set of instructions.